home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / asm / demos / parallexmountains / mountain_demo2.s < prev    next >
Text File  |  1980-01-03  |  52KB  |  2,581 lines

  1. ;=============================================================================
  2. ; Parallex Mountains Demo
  3. ; ----------------------------------------------------------------------------
  4. ; Demo Fixes:    Fixed AGA Copper registers to null.
  5. ;        Fixed Blitwaits, added them as there where none at all, doh!
  6. ;        Fixed Absolute address access to Interrupts without VBR base
  7. ;        Fixed the Music player which lost notes due to dbra loops
  8. ;
  9. ; Demo source fixed by Digital Candy
  10. ;=============================================================================
  11.  
  12.         section andy,code_c
  13.         incdir    scene1:coding/asm/demos_parallexmountains/
  14.  
  15. startlist1    equ    38
  16. startlist2    equ    50
  17. plnw        equ    40
  18. plnh        equ    128
  19. plnsize        equ    plnw*plnh
  20. plnnum        equ    3
  21. plndata        equ    plnsize*plnnum
  22. buggerbuffer    equ    $ce4+80
  23.  
  24. Start2:        bsr    GetVBR            ;get vectorbase for interrupts
  25.  
  26.         move.l    4,a6
  27.         move.l    #$10002,d1
  28.         move.l    #plndata,d0
  29.         jsr    -198(a6)        ;allocate screen memory 1
  30.         move.l    d0,plnbase
  31.         beq    error
  32.  
  33.         move.l    #$10002,d1
  34.         move.l    #buggerbuffer,d0
  35.         jsr    -198(a6)        ;allocate screen memory 2
  36.         move.l    d0,scrlbase
  37.         beq    error
  38.  
  39.         move.w    #$0080,$dff096
  40.         move.w    $dff01c,sysint
  41.         or.w    #$c000,sysint        ;save system intena
  42.         move.w    #$7fff,$dff09a
  43.  
  44.         move.l    _VBR(pc),a0
  45.         move.l    $6c(a0),int3save    ;and level 6 irq
  46.         move.l    #isr,$6c(a0)
  47.  
  48.         move.l    #newcopper,$dff080    ;install our copperlist
  49.         move.w    #$0200,$dff100
  50.  
  51.     move.l    #spec0,d0
  52.     move.l    d0,stor
  53.     move.w    stor,sp0+2
  54.     move.w    stor+2,sp0+6
  55.     move.l    #spec1,d0
  56.     move.l    d0,stor
  57.     move.w    stor,sp1+2
  58.     move.w    stor+2,sp1+6
  59.     move.l    #spec2,d0
  60.     move.l    d0,stor
  61.     move.w    stor,sp2+2
  62.     move.w    stor+2,sp2+6
  63.     move.l    #spec3,d0
  64.     move.l    d0,stor
  65.     move.w    stor,sp3+2
  66.     move.w    stor+2,sp3+6
  67.  
  68.     move.l    plnbase,a1    ;mount range
  69.     move.l    #plnsize,d0
  70.     move.l    a1,stor
  71.     move.l    stor,pln1
  72.     move.w    stor,bp4+2
  73.     move.w    stor+2,bp4+6
  74.     add.l    d0,stor
  75.     move.l    stor,pln2
  76.     move.w    stor,bp5+2
  77.     move.w    stor+2,bp5+6
  78.     add.l    d0,stor
  79.     move.l    stor,pln3
  80.     move.w    stor,bp6+2
  81.     move.w    stor+2,bp6+6
  82.  
  83.     move.l    #logo,d0    ;top of logo    
  84.     sub.l    #2,d0
  85.     move.w    d0,bp11+6
  86.     swap    d0
  87.     move.w    d0,bp11+2
  88.     swap    d0
  89.     add.l    #3840,d0
  90.     move.w    d0,bp12+6
  91.     swap    d0
  92.     move.w    d0,bp12+2
  93.     swap    d0
  94.     add.l    #3840,d0
  95.     move.w    d0,bp13+6
  96.     swap    d0
  97.     move.w    d0,bp13+2
  98.     swap    d0
  99.     add.l    #3840,d0
  100.     move.l    d0,a0
  101.     add.l    #2,a0
  102.     move.l    #cols+2,a1
  103.     moveq.l    #7,d0
  104. .lp4:    move.w    (a0)+,(a1)+
  105.     add.l    #2,a1
  106.     dbra    d0,.lp4
  107.  
  108.     move.l    #logo+2000,d0    ;bot of logo
  109.     sub.l    #2,d0
  110.     move.w    d0,bp1+6
  111.     swap    d0
  112.     move.w    d0,bp1+2
  113.     swap    d0
  114.     add.l    #3840,d0
  115.     move.w    d0,bp2+6
  116.     swap    d0
  117.     move.w    d0,bp2+2
  118.     swap    d0
  119.     add.l    #3840,d0
  120.     move.w    d0,bp3+6
  121.     swap    d0
  122.     move.w    d0,bp3+2
  123.     swap    d0
  124.  
  125.     move.l    #plndat,stor
  126.     move.w    stor,bpln1+2
  127.     move.w    stor+2,bpln1+6
  128.  
  129.     move.l    #20479,d0
  130.     lea    plndat,a0
  131.     lea    plndat2,a1
  132. .lp:    move.l    (a0)+,(a1)
  133.     eor.l    #-1,(a1)+
  134.     dbra    d0,.lp
  135.  
  136.     move.l    #0,d0
  137.     move.l    #0,d1
  138.     lea    plnaddr,a0
  139.     move.l    #plndat,d2
  140. .lp2:    move.l    (a0,d1),a1
  141.     move.w    d2,6(a1)
  142.     swap    d2
  143.     move.w    d2,2(a1)
  144.     swap    d2
  145.     add.l    #40,d2
  146.     add.l    #4,d1
  147.     add.l    #1,d0
  148.     cmp.l    #128,d0
  149.     bne    .lp2
  150.  
  151.     move.l    #0,d0
  152.     move.l    #0,d1
  153.     move.l    #0,d2
  154.     
  155.     lea    ref,a0
  156. .lp3:    move.l    pln1,d3
  157.     add.l    #77*42,d3
  158.     move.l    d0,d1
  159.     mulu    #84,d1
  160.     sub.l    d1,d3
  161.     move.l    d3,d4
  162.     add.l    #plnsize,d4
  163.     move.l    d4,d5
  164.     add.l    #plnsize,d5
  165.  
  166.     move.w    d3,6(a0)
  167.     swap    d3
  168.     move.w    d3,2(a0)
  169.  
  170.     move.w    d4,14(a0)
  171.     swap    d4
  172.     move.w    d4,10(a0)
  173.  
  174.     move.w    d5,22(a0)
  175.     swap    d5
  176.     move.w    d5,18(a0)
  177.  
  178.     add.l    #1,d0
  179.     add.l    #36,a0
  180.     cmp.l    #39,d0
  181.     bne    .lp3
  182.  
  183.     move.l    #blnk,d3    ;blank under mount ref down to top of scrl
  184.  
  185. .lp5:    move.w    d3,6(a0)
  186.     move.w    d3,14(a0)
  187.     move.w    d3,22(a0)
  188.     swap    d3
  189.     move.w    d3,2(a0)
  190.     move.w    d3,10(a0)
  191.     move.w    d3,18(a0)
  192.     swap    d3
  193.  
  194.     add.l    #1,d0
  195.     add.l    #36,a0
  196.     cmp.l    #59,d0
  197.     bne    .lp5
  198.  
  199.     lea    ref3,a0
  200.     move.l    #59,d0
  201.     move.l    scrlbase,d3    ;scrl
  202.     move.l    d3,d4
  203.     add.l    #$44c,d4
  204.     move.l    d4,d5
  205.     add.l    #$44c,d5
  206.  
  207. .lp8:    move.w    d3,6(a0)
  208.     move.w    d4,14(a0)
  209.     move.w    d5,22(a0)
  210.     swap    d3
  211.     swap    d4
  212.     swap    d5
  213.     move.w    d3,2(a0)
  214.     move.w    d4,10(a0)
  215.     move.w    d5,18(a0)
  216.     swap    d3
  217.     swap    d4
  218.     swap    d5
  219.  
  220.     add.l    #44,d3
  221.     add.l    #44,d4
  222.     add.l    #44,d5
  223.     add.l    #1,d0
  224.     add.l    #36,a0
  225.     cmp.l    #78,d0
  226.     bne    .lp8
  227.  
  228.  
  229. .lp9:    move.w    d3,6(a0)
  230.     move.w    d4,14(a0)
  231.     move.w    d5,22(a0)
  232.     swap    d3
  233.     swap    d4
  234.     swap    d5
  235.     move.w    d3,2(a0)
  236.     move.w    d4,10(a0)
  237.     move.w    d5,18(a0)
  238.     swap    d3
  239.     swap    d4
  240.     swap    d5
  241.  
  242.     add.l    #44,d3
  243.     add.l    #44,d4
  244.     add.l    #44,d5
  245.     add.l    #1,d0
  246.     add.l    #36,a0
  247.     cmp.l    #84,d0
  248.     bne    .lp9
  249.  
  250.     lea    ref4,a0        ;blank from 0 down
  251.     move.l    #$2a,d0
  252.  
  253.     move.l    #blnk,d3
  254.  
  255. .lp6:    move.w    d3,6(a0)
  256.     move.w    d3,14(a0)
  257.     move.w    d3,22(a0)
  258.     swap    d3
  259.     move.w    d3,2(a0)
  260.     move.w    d3,10(a0)
  261.     move.w    d3,18(a0)
  262.     swap    d3
  263.  
  264.     add.l    #36,a0
  265.     dbra    d0,.lp6
  266.  
  267.     lea    ref2,a0        ;line between scrl & ref
  268.     move.w    d3,6(a0)
  269.     move.w    d3,14(a0)
  270.     move.w    d3,22(a0)
  271.     swap    d3
  272.     move.w    d3,2(a0)
  273.     move.w    d3,10(a0)
  274.     move.w    d3,18(a0)
  275.     swap    d3
  276.  
  277.     move.w    d3,bp1a+6
  278.     move.w    d3,bp1b+6
  279.     move.w    d3,bp1c+6
  280.     move.w    d3,bp2a+6
  281.     move.w    d3,bp2b+6
  282.     move.w    d3,bp2c+6
  283.     move.w    d3,bp3a+6
  284.     move.w    d3,bp3b+6
  285.     move.w    d3,bp3c+6
  286.     swap    d3
  287.     move.w    d3,bp1a+2
  288.     move.w    d3,bp1b+2
  289.     move.w    d3,bp1c+2
  290.     move.w    d3,bp2a+2
  291.     move.w    d3,bp2b+2
  292.     move.w    d3,bp2c+2
  293.     move.w    d3,bp3a+2
  294.     move.w    d3,bp3b+2
  295.     move.w    d3,bp3c+2
  296.  
  297.     lea    ref4,a0        ;scrl ref
  298.     move.l    scrlbase,d3
  299.     add.l    #24*44,d3
  300.     move.l    d3,d4
  301.     add.l    #$44c,d4
  302.     move.l    d4,d5
  303.     add.l    #$44c,d5
  304.  
  305.     move.l    #12,d0
  306. .lpa:    move.w    d3,6(a0)
  307.     move.w    d4,14(a0)
  308.     move.w    d5,22(a0)
  309.     swap    d3
  310.     swap    d4
  311.     swap    d5
  312.     move.w    d3,2(a0)
  313.     move.w    d4,10(a0)
  314.     move.w    d5,18(a0)
  315.     swap    d3
  316.     swap    d4
  317.     swap    d5
  318.  
  319.     sub.l    #88,d3
  320.     sub.l    #88,d4
  321.     sub.l    #88,d5
  322.  
  323.     add.l    #36,a0
  324.     dbra    d0,.lpa
  325.  
  326.     move.w    #$8480,$dff096    
  327.     
  328.     jsr    start
  329.  
  330.     move.b    #2,$bfe001
  331.  
  332.  
  333. wait:    jsr    task            ;jmp to our sub.
  334.  
  335.     btst    #6,$bfe001        ;wait for mouse.
  336.     bne    wait
  337.  
  338.     move.l    4,a6
  339.     move.l    #gfxname,a1
  340.     moveq.l    #0,d0
  341.     jsr    -552(a6)
  342.     move.l    d0,a4
  343.     move.l    startlist1(a4),$dff080
  344.     move.l    startlist2(a4),$dff084
  345.     move.w    d0,$dff088            ;strobe copper
  346.  
  347.     move.l    _VBR(pc),a0
  348.     move.l    int3save,$6c(a0)
  349.  
  350.     move.w    sysint,$dff09a
  351.     move.w    #$8080,$dff096
  352.     move.w    #$0400,$dff096
  353.     move.l    4,a6
  354.     move.l    plnbase,a1
  355.     move.l    #plndata,d0
  356.     jsr    -210(a6)
  357.     move.l    4,a6
  358.     move.l    scrlbase,a1
  359.     move.l    #buggerbuffer,d0
  360.     jsr    -210(a6)
  361.     jsr    stop
  362.     clr.l    d0
  363. error:    move.w    #$0fff,$dff180
  364.     rts                ;exit.
  365.  
  366. _LVOSupervisor    =    -$1E
  367. AttnFlags    =    $128
  368.  
  369. GetVBR:        move.l    4.w,a6            * get execbase
  370.         suba.l    a4,a4            * no vbr is default..
  371.         move.w    AttnFlags(a6),d0    * get cpu flags
  372.         and.w    #15,d0            * are we on M68000
  373.         beq.s    .skip            * if so skip
  374.         lea    .getvbr(pc),a5        * else try to get VBR
  375.         jsr    _LVOSupervisor(a6)    * force exception..
  376.         bra.s    .skip            * skip past it..
  377. .getvbr        movec    vbr,d0            * put vbr into d0
  378.         move.l    d0,a4            * now return in a0 please
  379.         rte                * return from exception
  380. .skip        move.l    a4,_VBR
  381.         rts
  382.  
  383. _VBR:        dc.l    0
  384.  
  385. newcopper:                    
  386.     dc.w    $01fc,$0000,$0106,$0000,$0104,$0000,$010c,$0000
  387.     DC.W    $0100,$3200
  388.     DC.W    $0102,$0000
  389.     dc.w    $0104,%0000000001010100
  390. bp11:    DC.W    $00e0,$0000,$00e2,$0000
  391. bp12:    DC.W    $00e4,$0000,$00e6,$0000
  392. bp13:    DC.W    $00e8,$0000,$00ea,$0000
  393. bp5:    DC.W    $00ec,$0000,$00ee,$0000
  394. bp3:    DC.W    $00f0,$0000,$00f2,$0000
  395. bp6:    DC.W    $00f4,$0000,$00f6,$0000
  396.     DC.W    $008E,$2c81,$0090,$2cc1                                 
  397.     DC.W    $0092,$0030,$0094,$00d0
  398. mod:    DC.W    $0108,-2,$010a,-2
  399. cols:    dc.w    $0180,$0000
  400.     dc.w    $0182,$0000
  401.     dc.w    $0184,$0000
  402.     dc.w    $0186,$0000
  403.     dc.w    $0188,$0000
  404.     dc.w    $018a,$0000
  405.     dc.w    $018c,$0000
  406.     dc.w    $018e,$0000
  407.  
  408.     dc.w    $0198,$0b74
  409.     dc.w    $019a,$0962
  410.     dc.w    $019c,$0851
  411.     dc.w    $019e,$0740
  412.     dc.w    $0192,$0fca
  413.     dc.w    $0194,$0ea8
  414.     dc.w    $0196,$0c85
  415.     dc.w    $01a2,$0f00
  416.     dc.w    $01a4,$0800
  417.     dc.w    $01a6,$0c00
  418.     dc.w    $01aa,$00f0
  419.     dc.w    $01ac,$0080
  420.     dc.w    $01ae,$00c0
  421. sp0:    dc.w    $0120,$0000,$0122,$0000    
  422. sp1:    dc.w    $0124,$0000,$0126,$0000    
  423. sp2:    dc.w    $0128,$0000,$012a,$0000    
  424. sp3:    dc.w    $012c,$0000,$012e,$0000    
  425. sp4:    dc.w    $0130,$0000,$0132,$0000    
  426. sp5:    dc.w    $0134,$0000,$0136,$0000    
  427. sp6:    dc.w    $0138,$0000,$013a,$0000    
  428. sp7:    dc.w    $013c,$0000,$013e,$0000    
  429.  
  430.     dc.w    $5e01,$fffe
  431.     DC.W    $0100,$6600
  432.     dc.w    $010a,0,$0104,%0000000001000100
  433. bp1:    DC.W    $00e0,$0000,$00e2,$0000
  434. bp4:    DC.W    $00e4,$0000,$00e6,$0000
  435. bp2:    DC.W    $00e8,$0000,$00ea,$0000
  436.     
  437.  
  438.  
  439.     dc.w    $8c01,$fffe
  440. bp1a:    DC.W    $00e0,$0000,$00e2,$0000
  441. bp2a:    DC.W    $00e8,$0000,$00ea,$0000
  442. bp3a:    DC.W    $00f0,$0000,$00f2,$0000
  443.     dc.w    $8d01,$fffe
  444. bp1b:    DC.W    $00e0,$0000,$00e2,$0000
  445. bp2b:    DC.W    $00e8,$0000,$00ea,$0000
  446. bp3b:    DC.W    $00f0,$0000,$00f2,$0000
  447.     dc.w    $8e01,$fffe
  448. bp1c:    DC.W    $00e0,$0000,$00e2,$0000
  449. bp2c:    DC.W    $00e8,$0000,$00ea,$0000
  450. bp3c:    DC.W    $00f0,$0000,$00f2,$0000
  451.  
  452.  
  453.     dc.w    $ab01,$fffe
  454.  
  455.     dc.w    $0190,$0777
  456.     dc.w    $0192,$0fff
  457.     dc.w    $0194,$0eee
  458.     dc.w    $0196,$0ddd    
  459.     dc.w    $0198,$0ccc
  460.     dc.w    $019a,$0bbb
  461.     dc.w    $019c,$0aaa
  462.     dc.w    $019e,$0999
  463.     dc.w    $0180,$0003    ;poo
  464.     dc.w    $0186,$008a
  465.     dc.w    $0188,$0059
  466.     dc.w    $018a,$0038
  467.     dc.w    $018c,$0016
  468.     dc.w    $018e,$0004
  469.     dc.w    $0182,$00ff
  470.     dc.w    $0184,$00bd
  471.  
  472.     dc.w    $ac01,$fffe
  473.     DC.W    $0100,$4200
  474. ref:    DC.W    $00e0,$0000,$00e2,$0000
  475.     DC.W    $00e4,$0000,$00e6,$0000
  476.     DC.W    $00e8,$0000,$00ea,$0000
  477. bpln1:    DC.W    $00ec,$0000,$00ee,$0000
  478.  
  479.     dc.w    $ad01,$fffe
  480.     DC.W    $00e0,$0000,$00e2,$0000
  481.     DC.W    $00e4,$0000,$00e6,$0000
  482.     DC.W    $00e8,$0000,$00ea,$0000
  483. bpln2:    DC.W    $00ec,$0000,$00ee,$0000
  484.  
  485.     dc.w    $ae01,$fffe
  486.     DC.W    $00e0,$0000,$00e2,$0000
  487.     DC.W    $00e4,$0000,$00e6,$0000
  488.     DC.W    $00e8,$0000,$00ea,$0000
  489. bpln3:    DC.W    $00ec,$0000,$00ee,$0000
  490.  
  491.     dc.w    $af01,$fffe
  492.     DC.W    $00e0,$0000,$00e2,$0000
  493.     DC.W    $00e4,$0000,$00e6,$0000
  494.     DC.W    $00e8,$0000,$00ea,$0000
  495. bpln4:    DC.W    $00ec,$0000,$00ee,$0000
  496.  
  497.     dc.w    $b001,$fffe
  498.     DC.W    $00e0,$0000,$00e2,$0000
  499.     DC.W    $00e4,$0000,$00e6,$0000
  500.     DC.W    $00e8,$0000,$00ea,$0000
  501. bpln5:    DC.W    $00ec,$0000,$00ee,$0000
  502.  
  503.     dc.w    $b101,$fffe
  504.     DC.W    $00e0,$0000,$00e2,$0000
  505.     DC.W    $00e4,$0000,$00e6,$0000
  506.     DC.W    $00e8,$0000,$00ea,$0000
  507. bpln6:    DC.W    $00ec,$0000,$00ee,$0000
  508.  
  509.     dc.w    $b201,$fffe
  510.     DC.W    $00e0,$0000,$00e2,$0000
  511.     DC.W    $00e4,$0000,$00e6,$0000
  512.     DC.W    $00e8,$0000,$00ea,$0000
  513. bpln7:    DC.W    $00ec,$0000,$00ee,$0000
  514.  
  515.     dc.w    $b301,$fffe
  516.     DC.W    $00e0,$0000,$00e2,$0000
  517.     DC.W    $00e4,$0000,$00e6,$0000
  518.     DC.W    $00e8,$0000,$00ea,$0000
  519. bpln8:    DC.W    $00ec,$0000,$00ee,$0000
  520.  
  521.     dc.w    $b401,$fffe
  522.     DC.W    $00e0,$0000,$00e2,$0000
  523.     DC.W    $00e4,$0000,$00e6,$0000
  524.     DC.W    $00e8,$0000,$00ea,$0000
  525. bpln9:    DC.W    $00ec,$0000,$00ee,$0000
  526.  
  527.     dc.w    $b501,$fffe
  528.     DC.W    $00e0,$0000,$00e2,$0000
  529.     DC.W    $00e4,$0000,$00e6,$0000
  530.     DC.W    $00e8,$0000,$00ea,$0000
  531. bplna:    DC.W    $00ec,$0000,$00ee,$0000
  532.  
  533.     dc.w    $b601,$fffe
  534.     DC.W    $00e0,$0000,$00e2,$0000
  535.     DC.W    $00e4,$0000,$00e6,$0000
  536.     DC.W    $00e8,$0000,$00ea,$0000
  537. bplnb:    DC.W    $00ec,$0000,$00ee,$0000
  538.  
  539.     dc.w    $b701,$fffe
  540.     DC.W    $00e0,$0000,$00e2,$0000
  541.     DC.W    $00e4,$0000,$00e6,$0000
  542.     DC.W    $00e8,$0000,$00ea,$0000
  543. bplnc:    DC.W    $00ec,$0000,$00ee,$0000
  544.  
  545.     dc.w    $b801,$fffe
  546.     DC.W    $00e0,$0000,$00e2,$0000
  547.     DC.W    $00e4,$0000,$00e6,$0000
  548.     DC.W    $00e8,$0000,$00ea,$0000
  549. bplnd:    DC.W    $00ec,$0000,$00ee,$0000
  550.  
  551.     dc.w    $b901,$fffe
  552.     DC.W    $00e0,$0000,$00e2,$0000
  553.     DC.W    $00e4,$0000,$00e6,$0000
  554.     DC.W    $00e8,$0000,$00ea,$0000
  555. bplne:    DC.W    $00ec,$0000,$00ee,$0000
  556.  
  557.     dc.w    $ba01,$fffe
  558.     DC.W    $00e0,$0000,$00e2,$0000
  559.     DC.W    $00e4,$0000,$00e6,$0000
  560.     DC.W    $00e8,$0000,$00ea,$0000
  561. bplnf:    DC.W    $00ec,$0000,$00ee,$0000
  562.  
  563.     dc.w    $bb01,$fffe
  564.     DC.W    $00e0,$0000,$00e2,$0000
  565.     DC.W    $00e4,$0000,$00e6,$0000
  566.     DC.W    $00e8,$0000,$00ea,$0000
  567. bpln10:    DC.W    $00ec,$0000,$00ee,$0000
  568.  
  569.     dc.w    $bc01,$fffe
  570.     DC.W    $00e0,$0000,$00e2,$0000
  571.     DC.W    $00e4,$0000,$00e6,$0000
  572.     DC.W    $00e8,$0000,$00ea,$0000
  573. bpln11:    DC.W    $00ec,$0000,$00ee,$0000
  574.  
  575.     dc.w    $bd01,$fffe
  576.     DC.W    $00e0,$0000,$00e2,$0000
  577.     DC.W    $00e4,$0000,$00e6,$0000
  578.     DC.W    $00e8,$0000,$00ea,$0000
  579. bpln12:    DC.W    $00ec,$0000,$00ee,$0000
  580.  
  581.     dc.w    $be01,$fffe
  582.     DC.W    $00e0,$0000,$00e2,$0000
  583.     DC.W    $00e4,$0000,$00e6,$0000
  584.     DC.W    $00e8,$0000,$00ea,$0000
  585. bpln13:    DC.W    $00ec,$0000,$00ee,$0000
  586.  
  587.     dc.w    $bf01,$fffe
  588.     DC.W    $00e0,$0000,$00e2,$0000
  589.     DC.W    $00e4,$0000,$00e6,$0000
  590.     DC.W    $00e8,$0000,$00ea,$0000
  591. bpln14:    DC.W    $00ec,$0000,$00ee,$0000
  592.  
  593.     dc.w    $c001,$fffe
  594.     DC.W    $00e0,$0000,$00e2,$0000
  595.     DC.W    $00e4,$0000,$00e6,$0000
  596.     DC.W    $00e8,$0000,$00ea,$0000
  597. bpln15:    DC.W    $00ec,$0000,$00ee,$0000
  598.  
  599.     dc.w    $c101,$fffe
  600.     DC.W    $00e0,$0000,$00e2,$0000
  601.     DC.W    $00e4,$0000,$00e6,$0000
  602.     DC.W    $00e8,$0000,$00ea,$0000
  603. bpln16:    DC.W    $00ec,$0000,$00ee,$0000
  604.  
  605.     dc.w    $c201,$fffe
  606.     DC.W    $00e0,$0000,$00e2,$0000
  607.     DC.W    $00e4,$0000,$00e6,$0000
  608.     DC.W    $00e8,$0000,$00ea,$0000
  609. bpln17:    DC.W    $00ec,$0000,$00ee,$0000
  610.  
  611.     dc.w    $c301,$fffe
  612.     DC.W    $00e0,$0000,$00e2,$0000
  613.     DC.W    $00e4,$0000,$00e6,$0000
  614.     DC.W    $00e8,$0000,$00ea,$0000
  615. bpln18:    DC.W    $00ec,$0000,$00ee,$0000
  616.  
  617.     dc.w    $c401,$fffe
  618.     DC.W    $00e0,$0000,$00e2,$0000
  619.     DC.W    $00e4,$0000,$00e6,$0000
  620.     DC.W    $00e8,$0000,$00ea,$0000
  621. bpln19:    DC.W    $00ec,$0000,$00ee,$0000
  622.  
  623.     dc.w    $c501,$fffe
  624.     DC.W    $00e0,$0000,$00e2,$0000
  625.     DC.W    $00e4,$0000,$00e6,$0000
  626.     DC.W    $00e8,$0000,$00ea,$0000
  627. bpln1a:    DC.W    $00ec,$0000,$00ee,$0000
  628.  
  629.     dc.w    $c601,$fffe
  630.     DC.W    $00e0,$0000,$00e2,$0000
  631.     DC.W    $00e4,$0000,$00e6,$0000
  632.     DC.W    $00e8,$0000,$00ea,$0000
  633. bpln1b:    DC.W    $00ec,$0000,$00ee,$0000
  634.  
  635.     dc.w    $c701,$fffe
  636.     DC.W    $00e0,$0000,$00e2,$0000
  637.     DC.W    $00e4,$0000,$00e6,$0000
  638.     DC.W    $00e8,$0000,$00ea,$0000
  639. bpln1c:    DC.W    $00ec,$0000,$00ee,$0000
  640.  
  641.     dc.w    $c801,$fffe
  642.     DC.W    $00e0,$0000,$00e2,$0000
  643.     DC.W    $00e4,$0000,$00e6,$0000
  644.     DC.W    $00e8,$0000,$00ea,$0000
  645. bpln1d:    DC.W    $00ec,$0000,$00ee,$0000
  646.  
  647.     dc.w    $c901,$fffe
  648.     DC.W    $00e0,$0000,$00e2,$0000
  649.     DC.W    $00e4,$0000,$00e6,$0000
  650.     DC.W    $00e8,$0000,$00ea,$0000
  651. bpln1e:    DC.W    $00ec,$0000,$00ee,$0000
  652.  
  653.     dc.w    $ca01,$fffe
  654.     DC.W    $00e0,$0000,$00e2,$0000
  655.     DC.W    $00e4,$0000,$00e6,$0000
  656.     DC.W    $00e8,$0000,$00ea,$0000
  657. bpln1f:    DC.W    $00ec,$0000,$00ee,$0000
  658.  
  659.     dc.w    $cb01,$fffe
  660.     DC.W    $00e0,$0000,$00e2,$0000
  661.     DC.W    $00e4,$0000,$00e6,$0000
  662.     DC.W    $00e8,$0000,$00ea,$0000
  663. bpln20:    DC.W    $00ec,$0000,$00ee,$0000
  664.  
  665.     dc.w    $cc01,$fffe
  666.     DC.W    $00e0,$0000,$00e2,$0000
  667.     DC.W    $00e4,$0000,$00e6,$0000
  668.     DC.W    $00e8,$0000,$00ea,$0000
  669. bpln21:    DC.W    $00ec,$0000,$00ee,$0000
  670.  
  671.     dc.w    $cd01,$fffe
  672.     DC.W    $00e0,$0000,$00e2,$0000
  673.     DC.W    $00e4,$0000,$00e6,$0000
  674.     DC.W    $00e8,$0000,$00ea,$0000
  675. bpln22:    DC.W    $00ec,$0000,$00ee,$0000
  676.  
  677.     dc.w    $ce01,$fffe
  678.     DC.W    $00e0,$0000,$00e2,$0000
  679.     DC.W    $00e4,$0000,$00e6,$0000
  680.     DC.W    $00e8,$0000,$00ea,$0000
  681. bpln23:    DC.W    $00ec,$0000,$00ee,$0000
  682.  
  683.     dc.w    $cf01,$fffe
  684.     DC.W    $00e0,$0000,$00e2,$0000
  685.     DC.W    $00e4,$0000,$00e6,$0000
  686.     DC.W    $00e8,$0000,$00ea,$0000
  687. bpln24:    DC.W    $00ec,$0000,$00ee,$0000
  688.  
  689.     dc.w    $d001,$fffe
  690.     DC.W    $00e0,$0000,$00e2,$0000
  691.     DC.W    $00e4,$0000,$00e6,$0000
  692.     DC.W    $00e8,$0000,$00ea,$0000
  693. bpln25:    DC.W    $00ec,$0000,$00ee,$0000
  694.  
  695.     dc.w    $d101,$fffe
  696.     DC.W    $00e0,$0000,$00e2,$0000
  697.     DC.W    $00e4,$0000,$00e6,$0000
  698.     DC.W    $00e8,$0000,$00ea,$0000
  699. bpln26:    DC.W    $00ec,$0000,$00ee,$0000
  700.  
  701.     dc.w    $d201,$fffe
  702.     DC.W    $00e0,$0000,$00e2,$0000
  703.     DC.W    $00e4,$0000,$00e6,$0000
  704.     DC.W    $00e8,$0000,$00ea,$0000
  705. bpln27:    DC.W    $00ec,$0000,$00ee,$0000
  706.  
  707.     dc.w    $d301,$fffe
  708.     DC.W    $00e0,$0000,$00e2,$0000
  709.     DC.W    $00e4,$0000,$00e6,$0000
  710.     DC.W    $00e8,$0000,$00ea,$0000
  711. bpln28:    DC.W    $00ec,$0000,$00ee,$0000
  712.  
  713.     dc.w    $d401,$fffe
  714.     DC.W    $00e0,$0000,$00e2,$0000
  715.     DC.W    $00e4,$0000,$00e6,$0000
  716.     DC.W    $00e8,$0000,$00ea,$0000
  717. bpln29:    DC.W    $00ec,$0000,$00ee,$0000
  718.  
  719.     dc.w    $d501,$fffe
  720.     DC.W    $00e0,$0000,$00e2,$0000
  721.     DC.W    $00e4,$0000,$00e6,$0000
  722.     DC.W    $00e8,$0000,$00ea,$0000
  723. bpln2a:    DC.W    $00ec,$0000,$00ee,$0000
  724.  
  725.     dc.w    $d601,$fffe
  726.     DC.W    $00e0,$0000,$00e2,$0000
  727.     DC.W    $00e4,$0000,$00e6,$0000
  728.     DC.W    $00e8,$0000,$00ea,$0000
  729. bpln2b:    DC.W    $00ec,$0000,$00ee,$0000
  730.  
  731.     dc.w    $d701,$fffe
  732.     DC.W    $00e0,$0000,$00e2,$0000
  733.     DC.W    $00e4,$0000,$00e6,$0000
  734.     DC.W    $00e8,$0000,$00ea,$0000
  735. bpln2c:    DC.W    $00ec,$0000,$00ee,$0000
  736.  
  737.     dc.w    $d801,$fffe
  738.     DC.W    $00e0,$0000,$00e2,$0000
  739.     DC.W    $00e4,$0000,$00e6,$0000
  740.     DC.W    $00e8,$0000,$00ea,$0000
  741. bpln2d:    DC.W    $00ec,$0000,$00ee,$0000
  742.  
  743.     dc.w    $d901,$fffe
  744.     DC.W    $00e0,$0000,$00e2,$0000
  745.     DC.W    $00e4,$0000,$00e6,$0000
  746.     DC.W    $00e8,$0000,$00ea,$0000
  747. bpln2e:    DC.W    $00ec,$0000,$00ee,$0000
  748.  
  749.     dc.w    $da01,$fffe
  750.     DC.W    $00e0,$0000,$00e2,$0000
  751.     DC.W    $00e4,$0000,$00e6,$0000
  752.     DC.W    $00e8,$0000,$00ea,$0000
  753. bpln2f:    DC.W    $00ec,$0000,$00ee,$0000
  754.  
  755.     dc.w    $db01,$fffe
  756.     DC.W    $00e0,$0000,$00e2,$0000
  757.     DC.W    $00e4,$0000,$00e6,$0000
  758.     DC.W    $00e8,$0000,$00ea,$0000
  759. bpln30:    DC.W    $00ec,$0000,$00ee,$0000
  760.  
  761.     dc.w    $dc01,$fffe
  762.     DC.W    $00e0,$0000,$00e2,$0000
  763.     DC.W    $00e4,$0000,$00e6,$0000
  764.     DC.W    $00e8,$0000,$00ea,$0000
  765. bpln31:    DC.W    $00ec,$0000,$00ee,$0000
  766.  
  767.     dc.w    $dd01,$fffe
  768.     DC.W    $00e0,$0000,$00e2,$0000
  769.     DC.W    $00e4,$0000,$00e6,$0000
  770.     DC.W    $00e8,$0000,$00ea,$0000
  771. bpln32:    DC.W    $00ec,$0000,$00ee,$0000
  772.  
  773.     dc.w    $de01,$fffe
  774.     DC.W    $00e0,$0000,$00e2,$0000
  775.     DC.W    $00e4,$0000,$00e6,$0000
  776.     DC.W    $00e8,$0000,$00ea,$0000
  777. bpln33:    DC.W    $00ec,$0000,$00ee,$0000
  778.  
  779.     dc.w    $df01,$fffe
  780.     DC.W    $00e0,$0000,$00e2,$0000
  781.     DC.W    $00e4,$0000,$00e6,$0000
  782.     DC.W    $00e8,$0000,$00ea,$0000
  783. bpln34:    DC.W    $00ec,$0000,$00ee,$0000
  784.  
  785.     dc.w    $e001,$fffe
  786.     DC.W    $00e0,$0000,$00e2,$0000
  787.     DC.W    $00e4,$0000,$00e6,$0000
  788.     DC.W    $00e8,$0000,$00ea,$0000
  789. bpln35:    DC.W    $00ec,$0000,$00ee,$0000
  790.  
  791.     dc.w    $e101,$fffe
  792.     DC.W    $00e0,$0000,$00e2,$0000
  793.     DC.W    $00e4,$0000,$00e6,$0000
  794.     DC.W    $00e8,$0000,$00ea,$0000
  795. bpln36:    DC.W    $00ec,$0000,$00ee,$0000
  796.  
  797.     dc.w    $e201,$fffe
  798.     DC.W    $00e0,$0000,$00e2,$0000
  799.     DC.W    $00e4,$0000,$00e6,$0000
  800.     DC.W    $00e8,$0000,$00ea,$0000
  801. bpln37:    DC.W    $00ec,$0000,$00ee,$0000
  802.  
  803.  
  804.     dc.w    $e301,$fffe
  805.     DC.W    $00e0,$0000,$00e2,$0000
  806.     DC.W    $00e4,$0000,$00e6,$0000
  807.     DC.W    $00e8,$0000,$00ea,$0000
  808. bpln38:    DC.W    $00ec,$0000,$00ee,$0000
  809.  
  810.  
  811.     dc.w    $e401,$fffe
  812.     DC.W    $00e0,$0000,$00e2,$0000
  813.     DC.W    $00e4,$0000,$00e6,$0000
  814.     DC.W    $00e8,$0000,$00ea,$0000
  815. bpln39:    DC.W    $00ec,$0000,$00ee,$0000
  816.  
  817.     dc.w    $e501,$fffe
  818.     DC.W    $00e0,$0000,$00e2,$0000
  819.     DC.W    $00e4,$0000,$00e6,$0000
  820.     DC.W    $00e8,$0000,$00ea,$0000
  821. bpln3a:    DC.W    $00ec,$0000,$00ee,$0000
  822.  
  823.     dc.w    $e601,$fffe
  824.     DC.W    $00e0,$0000,$00e2,$0000
  825.     DC.W    $00e4,$0000,$00e6,$0000
  826.     DC.W    $00e8,$0000,$00ea,$0000
  827. bpln3b:    DC.W    $00ec,$0000,$00ee,$0000
  828.  
  829.     dc.w    $0182,$0fff
  830.     dc.w    $0184,$0e0e 
  831.     dc.w    $0186,$0c0c 
  832.     dc.w    $0188,$0a0a 
  833.     dc.w    $018a,$0909 
  834.     dc.w    $018c,$0707 
  835.     dc.w    $018e,$0fa0
  836.     dc.w    $0192,$0fff
  837.     dc.w    $0194,$0e0e
  838.     dc.w    $0196,$0c0c
  839.     dc.w    $0198,$0a0a
  840.     dc.w    $019a,$0909
  841.     dc.w    $019c,$0707
  842.     dc.w    $019e,$0fa0
  843.  
  844.  
  845.     dc.w    $e701,$fffe
  846. ref3:    DC.W    $00e0,$0000,$00e2,$0000
  847.     DC.W    $00e4,$0000,$00e6,$0000
  848.     DC.W    $00e8,$0000,$00ea,$0000
  849. bpln3c:    DC.W    $00ec,$0000,$00ee,$0000
  850.  
  851.     dc.w    $e801,$fffe
  852.     DC.W    $00e0,$0000,$00e2,$0000
  853.     DC.W    $00e4,$0000,$00e6,$0000
  854.     DC.W    $00e8,$0000,$00ea,$0000
  855. bpln3d:    DC.W    $00ec,$0000,$00ee,$0000
  856.  
  857.     dc.w    $e901,$fffe
  858.     DC.W    $00e0,$0000,$00e2,$0000
  859.     DC.W    $00e4,$0000,$00e6,$0000
  860.     DC.W    $00e8,$0000,$00ea,$0000
  861. bpln3e:    DC.W    $00ec,$0000,$00ee,$0000
  862.  
  863.     dc.w    $ea01,$fffe
  864.     DC.W    $00e0,$0000,$00e2,$0000
  865.     DC.W    $00e4,$0000,$00e6,$0000
  866.     DC.W    $00e8,$0000,$00ea,$0000
  867. bpln3f:    DC.W    $00ec,$0000,$00ee,$0000
  868.  
  869.     dc.w    $eb01,$fffe
  870.     DC.W    $00e0,$0000,$00e2,$0000
  871.     DC.W    $00e4,$0000,$00e6,$0000
  872.     DC.W    $00e8,$0000,$00ea,$0000
  873. bpln40:    DC.W    $00ec,$0000,$00ee,$0000
  874.  
  875.     dc.w    $ec01,$fffe
  876.     DC.W    $00e0,$0000,$00e2,$0000
  877.     DC.W    $00e4,$0000,$00e6,$0000
  878.     DC.W    $00e8,$0000,$00ea,$0000
  879. bpln41:    DC.W    $00ec,$0000,$00ee,$0000
  880.  
  881.     dc.w    $ed01,$fffe
  882.     DC.W    $00e0,$0000,$00e2,$0000
  883.     DC.W    $00e4,$0000,$00e6,$0000
  884.     DC.W    $00e8,$0000,$00ea,$0000
  885. bpln42:    DC.W    $00ec,$0000,$00ee,$0000
  886.  
  887.     dc.w    $ee01,$fffe
  888.     DC.W    $00e0,$0000,$00e2,$0000
  889.     DC.W    $00e4,$0000,$00e6,$0000
  890.     DC.W    $00e8,$0000,$00ea,$0000
  891. bpln43:    DC.W    $00ec,$0000,$00ee,$0000
  892.  
  893.     dc.w    $ef01,$fffe
  894.     DC.W    $00e0,$0000,$00e2,$0000
  895.     DC.W    $00e4,$0000,$00e6,$0000
  896.     DC.W    $00e8,$0000,$00ea,$0000
  897. bpln44:    DC.W    $00ec,$0000,$00ee,$0000
  898.  
  899.     dc.w    $f001,$fffe
  900.     DC.W    $00e0,$0000,$00e2,$0000
  901.     DC.W    $00e4,$0000,$00e6,$0000
  902.     DC.W    $00e8,$0000,$00ea,$0000
  903. bpln45:    DC.W    $00ec,$0000,$00ee,$0000
  904.  
  905.     dc.w    $f101,$fffe
  906.     DC.W    $00e0,$0000,$00e2,$0000
  907.     DC.W    $00e4,$0000,$00e6,$0000
  908.     DC.W    $00e8,$0000,$00ea,$0000
  909. bpln46:    DC.W    $00ec,$0000,$00ee,$0000
  910.  
  911.     dc.w    $f201,$fffe
  912.     DC.W    $00e0,$0000,$00e2,$0000
  913.     DC.W    $00e4,$0000,$00e6,$0000
  914.     DC.W    $00e8,$0000,$00ea,$0000
  915. bpln47:    DC.W    $00ec,$0000,$00ee,$0000
  916.  
  917.     dc.w    $f301,$fffe
  918.     DC.W    $00e0,$0000,$00e2,$0000
  919.     DC.W    $00e4,$0000,$00e6,$0000
  920.     DC.W    $00e8,$0000,$00ea,$0000
  921. bpln48:    DC.W    $00ec,$0000,$00ee,$0000
  922.  
  923.     dc.w    $f401,$fffe
  924.     DC.W    $00e0,$0000,$00e2,$0000
  925.     DC.W    $00e4,$0000,$00e6,$0000
  926.     DC.W    $00e8,$0000,$00ea,$0000
  927. bpln49:    DC.W    $00ec,$0000,$00ee,$0000
  928.  
  929.     dc.w    $f501,$fffe
  930.     DC.W    $00e0,$0000,$00e2,$0000
  931.     DC.W    $00e4,$0000,$00e6,$0000
  932.     DC.W    $00e8,$0000,$00ea,$0000
  933. bpln4a:    DC.W    $00ec,$0000,$00ee,$0000
  934.  
  935.     dc.w    $f601,$fffe
  936.     DC.W    $00e0,$0000,$00e2,$0000
  937.     DC.W    $00e4,$0000,$00e6,$0000
  938.     DC.W    $00e8,$0000,$00ea,$0000
  939. bpln4b:    DC.W    $00ec,$0000,$00ee,$0000
  940.  
  941.     dc.w    $f701,$fffe
  942.     DC.W    $00e0,$0000,$00e2,$0000
  943.     DC.W    $00e4,$0000,$00e6,$0000
  944.     DC.W    $00e8,$0000,$00ea,$0000
  945. bpln4c:    DC.W    $00ec,$0000,$00ee,$0000
  946.  
  947.     dc.w    $f801,$fffe
  948.     DC.W    $00e0,$0000,$00e2,$0000
  949.     DC.W    $00e4,$0000,$00e6,$0000
  950.     DC.W    $00e8,$0000,$00ea,$0000
  951. bpln4d:    DC.W    $00ec,$0000,$00ee,$0000
  952.  
  953.     dc.w    $f901,$fffe
  954.     DC.W    $00e0,$0000,$00e2,$0000
  955.     DC.W    $00e4,$0000,$00e6,$0000
  956.     DC.W    $00e8,$0000,$00ea,$0000
  957. bpln4e:    DC.W    $00ec,$0000,$00ee,$0000
  958.  
  959.     dc.w    $fa01,$fffe
  960.     DC.W    $00e0,$0000,$00e2,$0000
  961.     DC.W    $00e4,$0000,$00e6,$0000
  962.     DC.W    $00e8,$0000,$00ea,$0000
  963. bpln4f:    DC.W    $00ec,$0000,$00ee,$0000
  964.  
  965.     dc.w    $fb01,$fffe
  966.     DC.W    $00e0,$0000,$00e2,$0000
  967.     DC.W    $00e4,$0000,$00e6,$0000
  968.     DC.W    $00e8,$0000,$00ea,$0000
  969. bpln50:    DC.W    $00ec,$0000,$00ee,$0000
  970.  
  971.     dc.w    $fc01,$fffe
  972.     DC.W    $00e0,$0000,$00e2,$0000
  973.     DC.W    $00e4,$0000,$00e6,$0000
  974.     DC.W    $00e8,$0000,$00ea,$0000
  975. bpln51:    DC.W    $00ec,$0000,$00ee,$0000
  976.  
  977.     dc.w    $fd01,$fffe
  978.     DC.W    $00e0,$0000,$00e2,$0000
  979.     DC.W    $00e4,$0000,$00e6,$0000
  980.     DC.W    $00e8,$0000,$00ea,$0000
  981. bpln52:    DC.W    $00ec,$0000,$00ee,$0000
  982.  
  983.     dc.w    $fe01,$fffe
  984.     DC.W    $00e0,$0000,$00e2,$0000
  985.     DC.W    $00e4,$0000,$00e6,$0000
  986.     DC.W    $00e8,$0000,$00ea,$0000
  987. bpln53:    DC.W    $00ec,$0000,$00ee,$0000
  988.  
  989.     dc.w    $ff01,$fffe
  990.     DC.W    $00e0,$0000,$00e2,$0000
  991.     DC.W    $00e4,$0000,$00e6,$0000
  992.     DC.W    $00e8,$0000,$00ea,$0000
  993. bpln54:    DC.W    $00ec,$0000,$00ee,$0000
  994.     dc.w    $ffdf,$fffe    
  995.  
  996.     dc.w    $0001,$fffe
  997. ref2:    DC.W    $00e0,$0000,$00e2,$0000
  998.     DC.W    $00e4,$0000,$00e6,$0000
  999.     DC.W    $00e8,$0000,$00ea,$0000
  1000. bpln55:    DC.W    $00ec,$0000,$00ee,$0000
  1001.  
  1002.     dc.w    $0182,$0888        ;black
  1003.     dc.w    $0184,$0607 
  1004.     dc.w    $0186,$0506 
  1005.     dc.w    $0188,$0405 
  1006.     dc.w    $018a,$0304 
  1007.     dc.w    $018c,$0203 
  1008.     dc.w    $018e,$0840
  1009.  
  1010.     dc.w    $0192,$0fff
  1011.     dc.w    $0194,$0eae 
  1012.     dc.w    $0196,$0c9c 
  1013.     dc.w    $0198,$0a8a 
  1014.     dc.w    $019a,$0979 
  1015.     dc.w    $019c,$0767 
  1016.     dc.w    $019e,$0fa4
  1017.  
  1018.     dc.w    $0101,$fffe
  1019. ref4:    DC.W    $00e0,$0000,$00e2,$0000
  1020.     DC.W    $00e4,$0000,$00e6,$0000
  1021.     DC.W    $00e8,$0000,$00ea,$0000
  1022. bpln56:    DC.W    $00ec,$0000,$00ee,$0000
  1023.  
  1024.     dc.w    $0201,$fffe
  1025.     DC.W    $00e0,$0000,$00e2,$0000
  1026.     DC.W    $00e4,$0000,$00e6,$0000
  1027.     DC.W    $00e8,$0000,$00ea,$0000
  1028. bpln57:    DC.W    $00ec,$0000,$00ee,$0000
  1029.  
  1030.     dc.w    $0301,$fffe
  1031.     DC.W    $00e0,$0000,$00e2,$0000
  1032.     DC.W    $00e4,$0000,$00e6,$0000
  1033.     DC.W    $00e8,$0000,$00ea,$0000
  1034. bpln58:    DC.W    $00ec,$0000,$00ee,$0000
  1035.  
  1036.     dc.w    $0401,$fffe
  1037.     DC.W    $00e0,$0000,$00e2,$0000
  1038.     DC.W    $00e4,$0000,$00e6,$0000
  1039.     DC.W    $00e8,$0000,$00ea,$0000
  1040. bpln59:    DC.W    $00ec,$0000,$00ee,$0000
  1041.  
  1042.     dc.w    $0501,$fffe
  1043.     DC.W    $00e0,$0000,$00e2,$0000
  1044.     DC.W    $00e4,$0000,$00e6,$0000
  1045.     DC.W    $00e8,$0000,$00ea,$0000
  1046. bpln5a:    DC.W    $00ec,$0000,$00ee,$0000
  1047.  
  1048.     dc.w    $0601,$fffe
  1049.     DC.W    $00e0,$0000,$00e2,$0000
  1050.     DC.W    $00e4,$0000,$00e6,$0000
  1051.     DC.W    $00e8,$0000,$00ea,$0000
  1052. bpln5b:    DC.W    $00ec,$0000,$00ee,$0000
  1053.  
  1054.     dc.w    $0701,$fffe
  1055.     DC.W    $00e0,$0000,$00e2,$0000
  1056.     DC.W    $00e4,$0000,$00e6,$0000
  1057.     DC.W    $00e8,$0000,$00ea,$0000
  1058. bpln5c:    DC.W    $00ec,$0000,$00ee,$0000
  1059.  
  1060.     dc.w    $0801,$fffe
  1061.     DC.W    $00e0,$0000,$00e2,$0000
  1062.     DC.W    $00e4,$0000,$00e6,$0000
  1063.     DC.W    $00e8,$0000,$00ea,$0000
  1064. bpln5d:    DC.W    $00ec,$0000,$00ee,$0000
  1065.  
  1066.     dc.w    $0901,$fffe
  1067.     DC.W    $00e0,$0000,$00e2,$0000
  1068.     DC.W    $00e4,$0000,$00e6,$0000
  1069.     DC.W    $00e8,$0000,$00ea,$0000
  1070. bpln5e:    DC.W    $00ec,$0000,$00ee,$0000
  1071.  
  1072.     dc.w    $0a01,$fffe
  1073.     DC.W    $00e0,$0000,$00e2,$0000
  1074.     DC.W    $00e4,$0000,$00e6,$0000
  1075.     DC.W    $00e8,$0000,$00ea,$0000
  1076. bpln5f:    DC.W    $00ec,$0000,$00ee,$0000
  1077.  
  1078.     dc.w    $0b01,$fffe
  1079.     DC.W    $00e0,$0000,$00e2,$0000
  1080.     DC.W    $00e4,$0000,$00e6,$0000
  1081.     DC.W    $00e8,$0000,$00ea,$0000
  1082. bpln60:    DC.W    $00ec,$0000,$00ee,$0000
  1083.  
  1084.     dc.w    $0c01,$fffe
  1085.     DC.W    $00e0,$0000,$00e2,$0000
  1086.     DC.W    $00e4,$0000,$00e6,$0000
  1087.     DC.W    $00e8,$0000,$00ea,$0000
  1088. bpln61:    DC.W    $00ec,$0000,$00ee,$0000
  1089.  
  1090.     dc.w    $0d01,$fffe
  1091.     DC.W    $00e0,$0000,$00e2,$0000
  1092.     DC.W    $00e4,$0000,$00e6,$0000
  1093.     DC.W    $00e8,$0000,$00ea,$0000
  1094. bpln62:    DC.W    $00ec,$0000,$00ee,$0000
  1095.  
  1096.     dc.w    $0e01,$fffe
  1097.     DC.W    $00e0,$0000,$00e2,$0000
  1098.     DC.W    $00e4,$0000,$00e6,$0000
  1099.     DC.W    $00e8,$0000,$00ea,$0000
  1100. bpln63:    DC.W    $00ec,$0000,$00ee,$0000
  1101.  
  1102.     dc.w    $0f01,$fffe
  1103.     DC.W    $00e0,$0000,$00e2,$0000
  1104.     DC.W    $00e4,$0000,$00e6,$0000
  1105.     DC.W    $00e8,$0000,$00ea,$0000
  1106. bpln64:    DC.W    $00ec,$0000,$00ee,$0000
  1107.  
  1108.     dc.w    $1001,$fffe
  1109.     DC.W    $00e0,$0000,$00e2,$0000
  1110.     DC.W    $00e4,$0000,$00e6,$0000
  1111.     DC.W    $00e8,$0000,$00ea,$0000
  1112. bpln65:    DC.W    $00ec,$0000,$00ee,$0000
  1113.  
  1114.     dc.w    $1101,$fffe
  1115.     DC.W    $00e0,$0000,$00e2,$0000
  1116.     DC.W    $00e4,$0000,$00e6,$0000
  1117.     DC.W    $00e8,$0000,$00ea,$0000
  1118. bpln66:    DC.W    $00ec,$0000,$00ee,$0000
  1119.  
  1120.     dc.w    $1201,$fffe
  1121.     DC.W    $00e0,$0000,$00e2,$0000
  1122.     DC.W    $00e4,$0000,$00e6,$0000
  1123.     DC.W    $00e8,$0000,$00ea,$0000
  1124. bpln67:    DC.W    $00ec,$0000,$00ee,$0000
  1125.  
  1126.     dc.w    $1301,$fffe
  1127.     DC.W    $00e0,$0000,$00e2,$0000
  1128.     DC.W    $00e4,$0000,$00e6,$0000
  1129.     DC.W    $00e8,$0000,$00ea,$0000
  1130. bpln68:    DC.W    $00ec,$0000,$00ee,$0000
  1131.  
  1132.     dc.w    $1401,$fffe
  1133.     DC.W    $00e0,$0000,$00e2,$0000
  1134.     DC.W    $00e4,$0000,$00e6,$0000
  1135.     DC.W    $00e8,$0000,$00ea,$0000
  1136. bpln69:    DC.W    $00ec,$0000,$00ee,$0000
  1137.  
  1138.     dc.w    $1501,$fffe
  1139.     DC.W    $00e0,$0000,$00e2,$0000
  1140.     DC.W    $00e4,$0000,$00e6,$0000
  1141.     DC.W    $00e8,$0000,$00ea,$0000
  1142. bpln6a:    DC.W    $00ec,$0000,$00ee,$0000
  1143.  
  1144.     dc.w    $1601,$fffe
  1145.     DC.W    $00e0,$0000,$00e2,$0000
  1146.     DC.W    $00e4,$0000,$00e6,$0000
  1147.     DC.W    $00e8,$0000,$00ea,$0000
  1148. bpln6b:    DC.W    $00ec,$0000,$00ee,$0000
  1149.  
  1150.     dc.w    $1701,$fffe
  1151.     DC.W    $00e0,$0000,$00e2,$0000
  1152.     DC.W    $00e4,$0000,$00e6,$0000
  1153.     DC.W    $00e8,$0000,$00ea,$0000
  1154. bpln6c:    DC.W    $00ec,$0000,$00ee,$0000
  1155.  
  1156.     dc.w    $1801,$fffe
  1157.     DC.W    $00e0,$0000,$00e2,$0000
  1158.     DC.W    $00e4,$0000,$00e6,$0000
  1159.     DC.W    $00e8,$0000,$00ea,$0000
  1160. bpln6d:    DC.W    $00ec,$0000,$00ee,$0000
  1161.  
  1162.     dc.w    $1901,$fffe
  1163.     DC.W    $00e0,$0000,$00e2,$0000
  1164.     DC.W    $00e4,$0000,$00e6,$0000
  1165.     DC.W    $00e8,$0000,$00ea,$0000
  1166. bpln6e:    DC.W    $00ec,$0000,$00ee,$0000
  1167.  
  1168.     dc.w    $1a01,$fffe
  1169.     DC.W    $00e0,$0000,$00e2,$0000
  1170.     DC.W    $00e4,$0000,$00e6,$0000
  1171.     DC.W    $00e8,$0000,$00ea,$0000
  1172. bpln6f:    DC.W    $00ec,$0000,$00ee,$0000
  1173.  
  1174.     dc.w    $1b01,$fffe
  1175.     DC.W    $00e0,$0000,$00e2,$0000
  1176.     DC.W    $00e4,$0000,$00e6,$0000
  1177.     DC.W    $00e8,$0000,$00ea,$0000
  1178. bpln70:    DC.W    $00ec,$0000,$00ee,$0000
  1179.  
  1180.     dc.w    $1c01,$fffe
  1181.     DC.W    $00e0,$0000,$00e2,$0000
  1182.     DC.W    $00e4,$0000,$00e6,$0000
  1183.     DC.W    $00e8,$0000,$00ea,$0000
  1184. bpln71:    DC.W    $00ec,$0000,$00ee,$0000
  1185.  
  1186.     dc.w    $1d01,$fffe
  1187.     DC.W    $00e0,$0000,$00e2,$0000
  1188.     DC.W    $00e4,$0000,$00e6,$0000
  1189.     DC.W    $00e8,$0000,$00ea,$0000
  1190. bpln72:    DC.W    $00ec,$0000,$00ee,$0000
  1191.  
  1192.     dc.w    $1e01,$fffe
  1193.     DC.W    $00e0,$0000,$00e2,$0000
  1194.     DC.W    $00e4,$0000,$00e6,$0000
  1195.     DC.W    $00e8,$0000,$00ea,$0000
  1196. bpln73:    DC.W    $00ec,$0000,$00ee,$0000
  1197.  
  1198.     dc.w    $1f01,$fffe
  1199.     DC.W    $00e0,$0000,$00e2,$0000
  1200.     DC.W    $00e4,$0000,$00e6,$0000
  1201.     DC.W    $00e8,$0000,$00ea,$0000
  1202. bpln74:    DC.W    $00ec,$0000,$00ee,$0000
  1203.  
  1204.     dc.w    $2001,$fffe
  1205.     DC.W    $00e0,$0000,$00e2,$0000
  1206.     DC.W    $00e4,$0000,$00e6,$0000
  1207.     DC.W    $00e8,$0000,$00ea,$0000
  1208. bpln75:    DC.W    $00ec,$0000,$00ee,$0000
  1209.  
  1210.     dc.w    $2101,$fffe
  1211.     DC.W    $00e0,$0000,$00e2,$0000
  1212.     DC.W    $00e4,$0000,$00e6,$0000
  1213.     DC.W    $00e8,$0000,$00ea,$0000
  1214. bpln76:    DC.W    $00ec,$0000,$00ee,$0000
  1215.  
  1216.     dc.w    $2201,$fffe
  1217.     DC.W    $00e0,$0000,$00e2,$0000
  1218.     DC.W    $00e4,$0000,$00e6,$0000
  1219.     DC.W    $00e8,$0000,$00ea,$0000
  1220. bpln77:    DC.W    $00ec,$0000,$00ee,$0000
  1221.  
  1222.     dc.w    $2301,$fffe
  1223.     DC.W    $00e0,$0000,$00e2,$0000
  1224.     DC.W    $00e4,$0000,$00e6,$0000
  1225.     DC.W    $00e8,$0000,$00ea,$0000
  1226. bpln78:    DC.W    $00ec,$0000,$00ee,$0000
  1227.  
  1228.     dc.w    $2401,$fffe
  1229.     DC.W    $00e0,$0000,$00e2,$0000
  1230.     DC.W    $00e4,$0000,$00e6,$0000
  1231.     DC.W    $00e8,$0000,$00ea,$0000
  1232. bpln79:    DC.W    $00ec,$0000,$00ee,$0000
  1233.  
  1234.     dc.w    $2501,$fffe
  1235.     DC.W    $00e0,$0000,$00e2,$0000
  1236.     DC.W    $00e4,$0000,$00e6,$0000
  1237.     DC.W    $00e8,$0000,$00ea,$0000
  1238. bpln7a:    DC.W    $00ec,$0000,$00ee,$0000
  1239.  
  1240.     dc.w    $2601,$fffe
  1241.     DC.W    $00e0,$0000,$00e2,$0000
  1242.     DC.W    $00e4,$0000,$00e6,$0000
  1243.     DC.W    $00e8,$0000,$00ea,$0000
  1244. bpln7b:    DC.W    $00ec,$0000,$00ee,$0000
  1245.  
  1246.     dc.w    $2701,$fffe
  1247.     DC.W    $00e0,$0000,$00e2,$0000
  1248.     DC.W    $00e4,$0000,$00e6,$0000
  1249.     DC.W    $00e8,$0000,$00ea,$0000
  1250. bpln7c:    DC.W    $00ec,$0000,$00ee,$0000
  1251.  
  1252.     dc.w    $2801,$fffe
  1253.     DC.W    $00e0,$0000,$00e2,$0000
  1254.     DC.W    $00e4,$0000,$00e6,$0000
  1255.     DC.W    $00e8,$0000,$00ea,$0000
  1256. bpln7d:    DC.W    $00ec,$0000,$00ee,$0000
  1257.  
  1258.     dc.w    $2901,$fffe
  1259.     DC.W    $00e0,$0000,$00e2,$0000
  1260.     DC.W    $00e4,$0000,$00e6,$0000
  1261.     DC.W    $00e8,$0000,$00ea,$0000
  1262. bpln7e:    DC.W    $00ec,$0000,$00ee,$0000
  1263.  
  1264.     dc.w    $2a01,$fffe
  1265.     DC.W    $00e0,$0000,$00e2,$0000
  1266.     DC.W    $00e4,$0000,$00e6,$0000
  1267.     DC.W    $00e8,$0000,$00ea,$0000
  1268. bpln7f:    DC.W    $00ec,$0000,$00ee,$0000
  1269.  
  1270.     dc.w    $2b01,$fffe
  1271.     DC.W    $00e0,$0000,$00e2,$0000
  1272.     DC.W    $00e4,$0000,$00e6,$0000
  1273.     DC.W    $00e8,$0000,$00ea,$0000
  1274. bpln80:    DC.W    $00ec,$0000,$00ee,$0000
  1275.  
  1276.     dc.w    $2c01,$fffe
  1277.     DC.W    $00e0,$0000,$00e2,$0000
  1278.     DC.W    $00e4,$0000,$00e6,$0000
  1279.     DC.W    $00e8,$0000,$00ea,$0000
  1280. bpln81:    DC.W    $00ec,$0000,$00ee,$0000
  1281.  
  1282.     dc.w    $2d01,$fffe
  1283.     DC.W    $00e0,$0000,$00e2,$0000
  1284.     DC.W    $00e4,$0000,$00e6,$0000
  1285.     DC.W    $00e8,$0000,$00ea,$0000
  1286. bpln82:    DC.W    $00ec,$0000,$00ee,$0000
  1287.  
  1288.     dc.w    $ffff,$fffe
  1289.     
  1290.  
  1291. gfxname:
  1292.     DC.B    'graphics.library',0
  1293.     EVEN
  1294. gfxbase:
  1295.     DC.L    0
  1296.  
  1297. stor:    dc.l    0
  1298. pln1:    dc.l    0
  1299. pln2:    dc.l    0
  1300. pln3:    dc.l    0
  1301. pln4:    dc.l    0
  1302. pln5:    dc.l    0
  1303. pln6:    dc.l    0
  1304. sysint:    dc.w    0
  1305. int3save:
  1306.     dc.l    0
  1307. plnbase:dc.l    0
  1308. scrlbase:
  1309.     dc.l    0
  1310.  
  1311. isr:    movem.l    d0/d7-a0/a6,-(sp)
  1312.     move.w    #$0020,$dff09c
  1313.     movem.l    (sp)+,d0/d7-a0/a6
  1314.     rte
  1315.  
  1316. task:    move.w    $dff006,d0
  1317.     and.w    #$ff00,d0
  1318.     cmp.w    #$d500,d0
  1319.     bne    task
  1320.     ;move.w    #$00f0,$dff180
  1321.     jsr    updtspec
  1322.     jsr    blitmnt1
  1323.     jsr    blitmnt2
  1324.     jsr    make_scape
  1325.     jsr    getcirc
  1326.     jsr    replay
  1327.     jsr    scrl
  1328.     ;move.w    #$0000,$dff180
  1329.     rts
  1330.  
  1331.  
  1332.     ************************
  1333.     *Update frame according to frame
  1334.     *Obvious or what?
  1335.     ************************
  1336.  
  1337. Make_scape:
  1338. .lp5:    move.l    xvec,d0
  1339.     add.l    d0,frame
  1340.     move.l    frame,frame2
  1341.     and.l    #15,frame
  1342.     tst.l    xvec
  1343.     beq    .lp4
  1344.     
  1345.     bpl    .lp7
  1346.     tst.l    frame2
  1347.     bpl    .lp4
  1348.     bra    .lp6
  1349.  
  1350. .lp7:    tst.l    frame
  1351.     beq    .lp6
  1352. .lp8:    move.l    frame2,d1
  1353.     cmp.l    #15,d1
  1354.     ble    .lp4
  1355.  
  1356. .lp6:    move.l    startoff,d0
  1357.     move.l    startoff+4,startoff
  1358.     move.l    d0,startoff+4
  1359.  
  1360. .lp4:    lea    squdata,a2
  1361.     lea    squpos,a3
  1362.     move.l    #0,d6
  1363.     move.l    startoff,d4
  1364.     move.l    startoff+4,d5
  1365.     move.l    frame,d2
  1366.     mulu    #5120,d2
  1367.     move.l    #0,d0
  1368.     lea    plnaddr,a0
  1369.     move.w    (a3)+,d6
  1370.     move.w    (a2,d6),d6
  1371.     
  1372. .lp1:    move.l    d2,d3
  1373.     add.l    d4,d3
  1374.     move.l    (a0)+,a1
  1375.     move.w    d3,6(a1)
  1376.     swap    d3
  1377.     move.w    d3,2(a1)
  1378.  
  1379.     add.l    #40,d2
  1380.     add.l    #1,d0
  1381.     cmp.l    #128,d0
  1382.     beq    .lp2
  1383. .lp9:    dbra    d6,.lp1
  1384.     move.l    #0,d6
  1385.     exg    d4,d5
  1386.     move.w    (a3)+,d6
  1387.     move.w    (a2,d6),d6
  1388.     bra    .lp1
  1389. .lp2:
  1390.     move.l    yvec,d0
  1391.     asl.l    #1,d0
  1392.     add.w    d0,squpos
  1393.     add.w    d0,squpos+2
  1394.     add.w    d0,squpos+4
  1395.     add.w    d0,squpos+6
  1396.     add.w    d0,squpos+8
  1397.     add.w    d0,squpos+10
  1398.     add.w    d0,squpos+12
  1399.     add.w    d0,squpos+14
  1400.     add.w    d0,squpos+16
  1401.     add.w    d0,squpos+18
  1402.     tst.w    squpos
  1403.     bpl    .lpa
  1404.  
  1405.     add.w    #20,squpos
  1406.     add.w    #20,squpos+2
  1407.     add.w    #20,squpos+4
  1408.     add.w    #20,squpos+6
  1409.     add.w    #20,squpos+8
  1410.     add.w    #20,squpos+10
  1411.     add.w    #20,squpos+12
  1412.     add.w    #20,squpos+14
  1413.     add.w    #20,squpos+16
  1414.     add.w    #20,squpos+18
  1415.  
  1416.     move.l    startoff,d0
  1417.     move.l    startoff+4,startoff
  1418.     move.l    d0,startoff+4
  1419.     rts
  1420.     
  1421. .lpa:    cmp.w    #20,squpos
  1422.     bge    .lp3
  1423.     rts
  1424. .lp3:    
  1425.     sub.w    #20,squpos
  1426.     sub.w    #20,squpos+2
  1427.     sub.w    #20,squpos+4
  1428.     sub.w    #20,squpos+6
  1429.     sub.w    #20,squpos+8
  1430.     sub.w    #20,squpos+10
  1431.     sub.w    #20,squpos+12
  1432.     sub.w    #20,squpos+14
  1433.     sub.w    #20,squpos+16
  1434.     sub.w    #20,squpos+18
  1435.  
  1436.     move.l    startoff,d0
  1437.     move.l    startoff+4,startoff
  1438.     move.l    d0,startoff+4
  1439.     rts
  1440. frame:    dc.l    0    
  1441. frame2:    dc.l    0    
  1442. count:    dc.l    0
  1443. xvec:    dc.l    0
  1444. yvec:    dc.l    1
  1445. mxpos:    dc.l    0
  1446. mxpos2:    dc.l    0
  1447. vec1:    dc.l    0
  1448. vec2:    dc.l    0
  1449. deg1:    dc.l    0
  1450. deg2:    dc.l    76
  1451. flag:    dc.l    0
  1452.     even
  1453.  
  1454. Blitmnt1:
  1455.     bsr    wb
  1456.     move.l    xvec,d0        ;update xcoords
  1457.     add.l    d0,mxpos
  1458.     add.l    d0,mxpos2
  1459.     cmp.l    #320,mxpos
  1460.     bge    .lp4
  1461.     tst.l    mxpos
  1462.     bmi    .lp5
  1463.     bra    .lp6
  1464. .lp4:    tst.l    mxpos
  1465.     bmi    .lp5
  1466.     sub.l    #320,mxpos
  1467.     bra    .lp6
  1468. .lp5:    add.l    #320,mxpos
  1469.  
  1470. .lp6:    cmp.l    #640,mxpos2    ;update sec xcoord
  1471.     bge    .lp7
  1472.     tst.l    mxpos2
  1473.     bmi    .lp8
  1474.     bra    .lp9
  1475. .lp7:    tst.l    mxpos2
  1476.     bmi    .lp8
  1477.     sub.l    #640,mxpos2
  1478.     bra    .lp9
  1479. .lp8:    add.l    #640,mxpos2
  1480.  
  1481.  
  1482. .lp9:
  1483.     bsr    wb
  1484.     ;move.w    #$0fff,$dff180
  1485.     move.l    mxpos2,d5
  1486.     lsr.l    #4,d5
  1487.     bclr    #0,d5
  1488.     sub.l    #40,d5
  1489.     move.l    mxpos2,d3
  1490.     lsr.l    #1,d3
  1491.     and.l    #$0f,d3
  1492.     asl.l    #8,d3
  1493.     asl.l    #4,d3
  1494.     and.w    #$f000,d3
  1495.     move.w    d3,d4
  1496.     or.w    #%0000100111110000,d3    
  1497.  
  1498.     move.l    #mount1-2,d0
  1499.     move.l    pln1,d1
  1500.     sub.l    d5,d0
  1501.     ;add.l    #50*40,d1
  1502.     move.l    d0,$dff050    ;a source IM
  1503.     move.l    d1,$dff054    ;d source
  1504.     move.w    #$0026,$dff064    ;a mod
  1505.     move.w    #$0000,$dff066    ;d mod
  1506.     move.w    #$ffff,$dff044    ;fw mask
  1507.     move.w    #$ffff,$dff046    ;lw mask
  1508.     move.w    d3,$dff040    ;con0
  1509.     move.w    d4,$dff042    ;con1
  1510.     move.w    #%0001001110010101,$dff058    ;size        
  1511.     ;move.w    #$0000,$dff180
  1512.     bsr    wb
  1513.  
  1514.     add.l    #plnsize,d1
  1515.     add.l    #$1860,d0
  1516.     move.l    d0,$dff050    ;a source IM
  1517.     move.l    d1,$dff054    ;d source    
  1518.     move.w    #%0001001110010101,$dff058    ;size        
  1519.     ;move.w    #$0000,$dff180
  1520.     bsr    wb
  1521.  
  1522.     add.l    #plnsize,d1
  1523.     add.l    #$1860,d0
  1524.  
  1525.     move.l    d0,$dff050    ;a source IM
  1526.     move.l    d1,$dff054    ;d source
  1527.     move.w    #%0001001110010101,$dff058    ;size        
  1528.     bsr    wb
  1529.     ;move.w    #$0000,$dff180
  1530.     rts
  1531.     even
  1532.  
  1533. Blitmnt2:
  1534.     bsr    wb
  1535.     ;move.w    #$0fff,$dff180
  1536.  
  1537.     move.l    mxpos,d5
  1538.     lsr.l    #3,d5
  1539.     bclr    #0,d5
  1540.     sub.l    #40,d5
  1541.     move.l    mxpos,d3
  1542.     and.l    #$0f,d3
  1543.     asl.l    #8,d3
  1544.     asl.l    #4,d3
  1545.     and.w    #$f000,d3
  1546.     move.w    d3,d4
  1547.     or.w    #%0000111110111000,d3    
  1548.     
  1549.     move.l    #mount2-2,d0
  1550.     sub.l    d5,d0
  1551.     move.l    #mask-2,d2
  1552.     sub.l    d5,d2
  1553.     move.l    pln1,d1
  1554.     add.l    #46*42,d1
  1555.     move.l    d0,$dff050    ;a source IM
  1556.     move.l    d2,$dff04c    ;b mask IM
  1557.     move.l    d1,$dff048    ;c source
  1558.     move.l    d1,$dff054    ;d source
  1559.     move.w    #$0026,$dff064    ;a mod
  1560.     move.w    #$0026,$dff062    ;b mod
  1561.     move.w    #$0000,$dff060    ;c mod
  1562.     move.w    #$0000,$dff066    ;d mod
  1563.     move.w    #$ffff,$dff044    ;fw mask
  1564.     move.w    #$ffff,$dff046    ;lw mask
  1565.     move.w    d3,$dff040    ;con0
  1566.     move.w    d4,$dff042    ;con1
  1567.     move.w    #%0000100000010101,$dff058    ;size        
  1568.     bsr    wb
  1569.     ;move.w    #$0000,$dff180
  1570.  
  1571.     * M-00001111 10111000       *
  1572.  
  1573.     add.l    #plnsize,d1
  1574.     add.l    #$a00,d0
  1575.  
  1576.     move.l    d0,$dff050    ;a source IM
  1577.     move.l    d2,$dff04c    ;b mask IM
  1578.     move.l    d1,$dff048    ;c source
  1579.     move.l    d1,$dff054    ;d source    
  1580.     move.w    #%0000100000010101,$dff058    ;size        
  1581.     bsr    wb
  1582.     ;move.w    #$0000,$dff180
  1583.  
  1584.     add.l    #plnsize,d1
  1585.     add.l    #$a00,d0
  1586.  
  1587.     move.l    d0,$dff050    ;a source IM
  1588.     move.l    d2,$dff04c    ;b mask IM
  1589.     move.l    d1,$dff048    ;c source
  1590.     move.l    d1,$dff054    ;d source
  1591.     move.w    #%0000100000010101,$dff058    ;size        
  1592.     bsr    wb
  1593.     ;move.w    #$0000,$dff180
  1594.  
  1595.     rts
  1596.  
  1597.  
  1598. Getcirc:
  1599.     move.l    deg1,d0
  1600.     lea    lrgcircle,a0
  1601.     move.l    (a0,d0),d0
  1602.     move.l    d0,xvec
  1603.  
  1604.     add.l    #4,deg1
  1605.     add.l    deg1,a0
  1606.     cmp.l    #vec,a0
  1607.     bne    .lp
  1608.     move.l    #0,deg1
  1609. .lp:    add.l    #1,deg2
  1610.     cmp.l    #1000,deg2
  1611.     bne    .lp2
  1612.     move.l    #0,deg2
  1613.     eor.l    #-1,yvec
  1614. .lp2:    rts
  1615.  
  1616. updtspec:
  1617.     tst.l    spcl0
  1618.     beq    nospec0
  1619.     move.l    #spec0,a0
  1620.     move.l    spcl0,d0
  1621.     asl.l    #2,d0
  1622.     move.w    #$00ff,4(a0)
  1623.     sub.l    #1,spcl0
  1624.     move.l    #$51,d0        ;80
  1625.     lea    spectab,a1
  1626.     move.l    spcl0,d1
  1627.     asl.l    #1,d1
  1628.     add.w    (a1,d1),d0
  1629.     move.b    d0,(a0)
  1630.     add.l    spcl0,d0
  1631.     move.b    d0,2(a0)
  1632.     move.l    spcl0,d0
  1633.     asl.l    #2,d0
  1634.     move.w    #0,4(a0)    
  1635.     lsr.l    #1,d0
  1636. nospec0:
  1637.     tst.w    mt_aud1temp
  1638.     beq    nov0
  1639.     move.l    #32,spcl0
  1640.     move.w    #0,mt_aud1temp
  1641. nov0:    
  1642.     tst.l    spcl1
  1643.     beq    nospec1
  1644.     move.l    #spec1,a0
  1645.     move.l    spcl1,d0
  1646.     asl.l    #2,d0
  1647.     move.w    #$00ff,4(a0)
  1648.     sub.l    #1,spcl1
  1649.     move.l    #$51,d0
  1650.     lea    spectab,a1
  1651.     move.l    spcl1,d1
  1652.     asl.l    #1,d1
  1653.     add.w    (a1,d1),d0
  1654.     move.b    d0,(a0)
  1655.     add.l    spcl1,d0
  1656.     move.b    d0,2(a0)
  1657.     move.l    spcl1,d0
  1658.     asl.l    #2,d0
  1659.     move.w    #0,4(a0)    
  1660.     lsr.l    #1,d0
  1661. nospec1:tst.w    mt_aud2temp
  1662.     beq    nov1
  1663.     move.l    #32,spcl1
  1664.     move.w    #0,mt_aud2temp
  1665. nov1:    
  1666.     tst.l    spcl2
  1667.     beq    nospec2
  1668.     move.l    #spec2,a0
  1669.     move.l    spcl2,d0
  1670.     asl.l    #2,d0
  1671.     move.w    #$00ff,4(a0)
  1672.     sub.l    #1,spcl2
  1673.     move.l    #$51,d0
  1674.     lea    spectab,a1
  1675.     move.l    spcl2,d1
  1676.     asl.l    #1,d1
  1677.     add.w    (a1,d1),d0
  1678.     move.b    d0,(a0)
  1679.     add.l    spcl2,d0
  1680.     move.b    d0,2(a0)
  1681.     move.l    spcl2,d0
  1682.     asl.l    #2,d0
  1683.     move.w    #0,4(a0)    
  1684.     lsr.l    #1,d0
  1685. nospec2:tst.w    mt_aud3temp
  1686.     beq    nov2
  1687.     move.l    #32,spcl2
  1688.     move.w    #0,mt_aud3temp
  1689. nov2:    
  1690.     tst.l    spcl3
  1691.     beq    nospec3
  1692.     move.l    #spec3,a0
  1693.     move.l    spcl3,d0
  1694.     asl.l    #2,d0
  1695.     move.l    #$00ff00ff,4(a0)
  1696.     sub.l    #1,spcl3
  1697.     move.l    #$51,d0
  1698.     lea    spectab,a1
  1699.     move.l    spcl3,d1
  1700.     asl.l    #1,d1
  1701.     add.w    (a1,d1),d0
  1702.     move.b    d0,(a0)
  1703.     add.l    spcl3,d0
  1704.     move.b    d0,2(a0)
  1705.     move.l    spcl3,d0
  1706.     asl.l    #2,d0
  1707.     move.l    #0,4(a0)    
  1708.     lsr.l    #1,d0
  1709. nospec3:tst.w    mt_aud4temp
  1710.     beq    nov3
  1711.     move.l    #32,spcl3
  1712.     move.w    #0,mt_aud4temp
  1713. nov3:    rts
  1714.  
  1715. wb:        btst    #14,$dff002
  1716.         bne.s    wb
  1717.         rts
  1718.  
  1719. ; -----------------------------------------------
  1720. ; ------- Soundtracker V2.4 - playroutine -------
  1721. ; -----------------------------------------------
  1722.  
  1723. ; call 'mt_init' to initialize the playroutine
  1724.  
  1725. start:    lea    mt_data,a0
  1726.     add.l    #$03b8,a0
  1727.     moveq    #$7f,d0
  1728.     moveq    #0,d1
  1729. mt_init1:
  1730.     move.l    d1,d2
  1731.     subq.w    #1,d0
  1732. mt_init2:
  1733.     move.b    (a0)+,d1
  1734.     cmp.b    d2,d1
  1735.     bgt.s    mt_init1
  1736.     dbf    d0,mt_init2
  1737.     addq.b    #1,d2
  1738.  
  1739. mt_init3:
  1740.     lea    mt_data,a0
  1741.     lea    mt_sample1(pc),a1
  1742.     asl.l    #8,d2
  1743.     asl.l    #2,d2
  1744.     add.l    #$438,d2
  1745.     add.l    a0,d2
  1746.     moveq    #$1e,d0
  1747. mt_init4:
  1748.     move.l    d2,(a1)+
  1749.     moveq    #0,d1
  1750.     move.w    42(a0),d1
  1751.     asl.l    #1,d1
  1752.     add.l    d1,d2
  1753.     add.l    #$1e,a0
  1754.     dbf    d0,mt_init4
  1755.  
  1756.     lea    mt_sample1(PC),a0
  1757.     moveq    #0,d0
  1758. mt_clear:
  1759.     move.l    (a0,d0.w),a1
  1760.     clr.l    (a1)
  1761.     addq.w    #4,d0
  1762.     cmp.w    #$7c,d0
  1763.     bne.s    mt_clear
  1764.  
  1765.     clr.w    $dff0a8
  1766.     clr.w    $dff0b8
  1767.     clr.w    $dff0c8
  1768.     clr.w    $dff0d8
  1769.     clr.l    mt_partnrplay
  1770.     clr.l    mt_partnote
  1771.     clr.l    mt_partpoint
  1772.  
  1773.     move.b    mt_data+$3b6,mt_maxpart+1
  1774.     rts
  1775.  
  1776. ; call 'mt_end' to switch the sound off
  1777.  
  1778. stop:    clr.w    $dff0a8
  1779.     clr.w    $dff0b8
  1780.     clr.w    $dff0c8
  1781.     clr.w    $dff0d8
  1782.     move.w    #$f,$dff096
  1783.     rts
  1784.  
  1785. ; the playroutine - call this every frame
  1786.  
  1787. replay:
  1788.     addq.w    #1,mt_counter
  1789. mt_cool:cmp.w    #6,mt_counter
  1790.     bne.s    mt_notsix
  1791.     clr.w    mt_counter
  1792.     bra    mt_rout2
  1793.  
  1794. mt_notsix:
  1795.     lea    mt_aud1temp(PC),a6
  1796.     tst.b    3(a6)
  1797.     beq.s    mt_arp1
  1798.     lea    $dff0a0,a5        
  1799.     bsr.s    mt_arprout
  1800. mt_arp1:lea    mt_aud2temp(PC),a6
  1801.     tst.b    3(a6)
  1802.     beq.s    mt_arp2
  1803.     lea    $dff0b0,a5
  1804.     bsr.s    mt_arprout
  1805. mt_arp2:lea    mt_aud3temp(PC),a6
  1806.     tst.b    3(a6)
  1807.     beq.s    mt_arp3
  1808.     lea    $dff0c0,a5
  1809.     bsr.s    mt_arprout
  1810. mt_arp3:lea    mt_aud4temp(PC),a6
  1811.     tst.b    3(a6)
  1812.     beq.s    mt_arp4
  1813.     lea    $dff0d0,a5
  1814.     bra.s    mt_arprout
  1815. mt_arp4:rts
  1816.  
  1817. mt_arprout:
  1818.     move.b    2(a6),d0
  1819.     and.b    #$0f,d0
  1820.     tst.b    d0
  1821.     beq    mt_arpegrt
  1822.     cmp.b    #$01,d0
  1823.     beq.s    mt_portup
  1824.     cmp.b    #$02,d0
  1825.     beq.s    mt_portdwn
  1826.     cmp.b    #$0a,d0
  1827.     beq.s    mt_volslide
  1828.     rts
  1829.  
  1830. mt_portup:
  1831.     moveq    #0,d0
  1832.     move.b    3(a6),d0
  1833.     sub.w    d0,22(a6)
  1834.     cmp.w    #$71,22(a6)
  1835.     bpl.s    mt_ok1
  1836.     move.w    #$71,22(a6)
  1837. mt_ok1:    move.w    22(a6),6(a5)
  1838.     rts
  1839.  
  1840. mt_portdwn:
  1841.     moveq    #0,d0
  1842.     move.b    3(a6),d0
  1843.     add.w    d0,22(a6)
  1844.     cmp.w    #$538,22(a6)
  1845.     bmi.s    mt_ok2
  1846.     move.w    #$538,22(a6)
  1847. mt_ok2:    move.w    22(a6),6(a5)
  1848.     rts
  1849.  
  1850. mt_volslide:
  1851.     moveq    #0,d0
  1852.     move.b    3(a6),d0
  1853.     lsr.b    #4,d0
  1854.     tst.b    d0
  1855.     beq.s    mt_voldwn
  1856.     add.w    d0,18(a6)
  1857.     cmp.w    #64,18(a6)
  1858.     bmi.s    mt_ok3
  1859.     move.w    #64,18(a6)
  1860. mt_ok3:    move.w    18(a6),8(a5)
  1861.     rts
  1862. mt_voldwn:
  1863.     moveq    #0,d0
  1864.     move.b    3(a6),d0
  1865.     and.b    #$0f,d0
  1866.     sub.w    d0,18(a6)
  1867.     bpl.s    mt_ok4
  1868.     clr.w    18(a6)
  1869. mt_ok4:    move.w    18(a6),8(a5)
  1870.     rts
  1871.  
  1872. mt_arpegrt:
  1873.     move.w    mt_counter(PC),d0
  1874.     cmp.w    #1,d0
  1875.     beq.s    mt_loop2
  1876.     cmp.w    #2,d0
  1877.     beq.s    mt_loop3
  1878.     cmp.w    #3,d0
  1879.     beq.s    mt_loop4
  1880.     cmp.w    #4,d0
  1881.     beq.s    mt_loop2
  1882.     cmp.w    #5,d0
  1883.     beq.s    mt_loop3
  1884.     rts
  1885.  
  1886. mt_loop2:
  1887.     moveq    #0,d0
  1888.     move.b    3(a6),d0
  1889.     lsr.b    #4,d0
  1890.     bra.s    mt_cont
  1891. mt_loop3:
  1892.     moveq    #$00,d0
  1893.     move.b    3(a6),d0
  1894.     and.b    #$0f,d0
  1895.     bra.s    mt_cont
  1896. mt_loop4:
  1897.     move.w    16(a6),d2
  1898.     bra.s    mt_endpart
  1899. mt_cont:
  1900.     add.w    d0,d0
  1901.     moveq    #0,d1
  1902.     move.w    16(a6),d1
  1903.     and.w    #$fff,d1
  1904.     lea    mt_arpeggio(PC),a0
  1905. mt_loop5:
  1906.     move.w    (a0,d0),d2
  1907.     cmp.w    (a0),d1
  1908.     beq.s    mt_endpart
  1909.     addq.l    #2,a0
  1910.     bra.s    mt_loop5
  1911. mt_endpart:
  1912.     move.w    d2,6(a5)
  1913.     rts
  1914.  
  1915. mt_rout2:
  1916.     lea    mt_data,a0
  1917.     move.l    a0,a3
  1918.     add.l    #$0c,a3
  1919.     move.l    a0,a2
  1920.     add.l    #$3b8,a2
  1921.     add.l    #$43c,a0
  1922.     move.l    mt_partnrplay(PC),d0
  1923.     moveq    #0,d1
  1924.     move.b    (a2,d0),d1
  1925.     asl.l    #8,d1
  1926.     asl.l    #2,d1
  1927.     add.l    mt_partnote(PC),d1
  1928.     move.l    d1,mt_partpoint
  1929.     clr.w    mt_dmacon
  1930.  
  1931.     lea    $dff0a0,a5
  1932.     lea    mt_aud1temp(PC),a6
  1933.     bsr    mt_playit
  1934.     lea    $dff0b0,a5
  1935.     lea    mt_aud2temp(PC),a6
  1936.     bsr    mt_playit
  1937.     lea    $dff0c0,a5
  1938.     lea    mt_aud3temp(PC),a6
  1939.     bsr    mt_playit
  1940.     lea    $dff0d0,a5
  1941.     lea    mt_aud4temp(PC),a6
  1942.     bsr    mt_playit
  1943.  
  1944.         moveq    #3-1,d0
  1945. pp_waitdma2    move.b    $dff006,d1
  1946. pp_waitdma3    cmp.b    $dff006,d1
  1947.         dbeq    d0,pp_waitdma2        ;do a few *LAME* rasters waits
  1948.         beq.b    pp_waitdma3        ;for samples to finish playing!
  1949.  
  1950.     move.w    #$8000,d0
  1951.     or.w    mt_dmacon,d0
  1952.     move.w    d0,$dff096
  1953.  
  1954.     lea    mt_aud4temp(PC),a6
  1955.     cmp.w    #1,14(a6)
  1956.     bne.s    mt_voice3
  1957.     move.l    10(a6),$dff0d0
  1958.     move.w    #1,$dff0d4
  1959. mt_voice3:
  1960.     lea    mt_aud3temp(PC),a6
  1961.     cmp.w    #1,14(a6)
  1962.     bne.s    mt_voice2
  1963.     move.l    10(a6),$dff0c0
  1964.     move.w    #1,$dff0c4
  1965. mt_voice2:
  1966.     lea    mt_aud2temp(PC),a6
  1967.     cmp.w    #1,14(a6)
  1968.     bne.s    mt_voice1
  1969.     move.l    10(a6),$dff0b0
  1970.     move.w    #1,$dff0b4
  1971. mt_voice1:
  1972.     lea    mt_aud1temp(PC),a6
  1973.     cmp.w    #1,14(a6)
  1974.     bne.s    mt_voice0
  1975.     move.l    10(a6),$dff0a0
  1976.     move.w    #1,$dff0a4
  1977. mt_voice0:
  1978.     move.l    mt_partnote(PC),d0
  1979.     add.l    #$10,d0
  1980.     move.l    d0,mt_partnote
  1981.     cmp.l    #$400,d0
  1982.     bne.s    mt_stop
  1983. mt_higher:
  1984.     clr.l    mt_partnote
  1985.     addq.l    #1,mt_partnrplay
  1986.     moveq    #0,d0
  1987.     move.w    mt_maxpart(PC),d0
  1988.     move.l    mt_partnrplay(PC),d1
  1989.     cmp.l    d0,d1
  1990.     bne.s    mt_stop
  1991.     clr.l    mt_partnrplay
  1992. mt_stop:tst.w    mt_status
  1993.     beq.s    mt_stop2
  1994.     clr.w    mt_status
  1995.     bra.s    mt_higher
  1996. mt_stop2:
  1997.     rts
  1998.  
  1999. mt_playit:
  2000.     move.l    (a0,d1.l),(a6)
  2001.     addq.l    #4,d1
  2002.     moveq    #0,d2
  2003.     move.b    2(a6),d2
  2004.     and.b    #$f0,d2
  2005.     lsr.b    #4,d2
  2006.  
  2007.     move.b    (a6),d0
  2008.     and.b    #$f0,d0
  2009.     or.b    d0,d2
  2010.     tst.b    d2
  2011.     beq.s    mt_nosamplechange
  2012.  
  2013.     moveq    #0,d3
  2014.     lea    mt_samples(PC),a1
  2015.     move.l    d2,d4
  2016.     asl.l    #2,d2
  2017.     mulu    #$1e,d4
  2018.     move.l    (a1,d2),4(a6)
  2019.     move.w    (a3,d4.l),8(a6)
  2020.     move.w    2(a3,d4.l),18(a6)
  2021.     move.w    4(a3,d4.l),d3
  2022.     tst.w    d3
  2023.     beq.s    mt_displace
  2024.     move.l    4(a6),d2
  2025.     add.l    d3,d2
  2026.     move.l    d2,4(a6)
  2027.     move.l    d2,10(a6)
  2028.     move.w    6(a3,d4.l),8(a6)
  2029.     move.w    6(a3,d4.l),14(a6)
  2030.     move.w    18(a6),8(a5)
  2031.     bra.s    mt_nosamplechange
  2032.  
  2033. mt_displace:
  2034.     move.l    4(a6),d2
  2035.     add.l    d3,d2
  2036.     move.l    d2,10(a6)
  2037.     move.w    6(a3,d4.l),14(a6)
  2038.     move.w    18(a6),8(a5)
  2039. mt_nosamplechange:
  2040.     move.w    (a6),d0
  2041.     and.w    #$fff,d0
  2042.     tst.w    d0
  2043.     beq.s    mt_retrout
  2044.     move.w    (a6),16(a6)
  2045.     move.w    20(a6),$dff096
  2046.     move.l    4(a6),(a5)
  2047.     move.w    8(a6),4(a5)
  2048.     move.w    (a6),d0
  2049.     and.w    #$fff,d0
  2050.     move.w    d0,6(a5)
  2051.     move.w    20(a6),d0
  2052.     or.w    d0,mt_dmacon
  2053.  
  2054. mt_retrout:
  2055.     tst.w    (a6)
  2056.     beq.s    mt_nonewper
  2057.     move.w    (a6),22(a6)
  2058.  
  2059. mt_nonewper:
  2060.     move.b    2(a6),d0
  2061.     and.b    #$0f,d0
  2062.     cmp.b    #$0b,d0
  2063.     beq.s    mt_posjmp
  2064.     cmp.b    #$0c,d0
  2065.     beq.s    mt_setvol
  2066.     cmp.b    #$0d,d0
  2067.     beq.s    mt_break
  2068.     cmp.b    #$0e,d0
  2069.     beq.s    mt_setfil
  2070.     cmp.b    #$0f,d0
  2071.     beq.s    mt_setspeed
  2072.     rts
  2073.  
  2074. mt_posjmp:
  2075.     not.w    mt_status
  2076.     moveq    #0,d0
  2077.     move.b    3(a6),d0
  2078.     subq.b    #1,d0
  2079.     move.l    d0,mt_partnrplay
  2080.     rts
  2081.  
  2082. mt_setvol:
  2083.     move.b    3(a6),8(a5)
  2084.     rts
  2085.  
  2086. mt_break:
  2087.     not.w    mt_status
  2088.     rts
  2089.  
  2090. mt_setfil:
  2091.     moveq    #0,d0
  2092.     move.b    3(a6),d0
  2093.     and.b    #1,d0
  2094.     rol.b    #1,d0
  2095.     and.b    #$fd,$bfe001
  2096.     or.b    d0,$bfe001
  2097.     rts
  2098.  
  2099. mt_setspeed:
  2100.     move.b    3(a6),d0
  2101.     and.b    #$0f,d0
  2102.     beq.s    mt_back
  2103.     clr.w    mt_counter
  2104.     move.b    d0,mt_cool+3
  2105. mt_back:rts
  2106.  
  2107. mt_aud1temp:
  2108.     dcb.w    10,0
  2109.     dc.w    1
  2110.     dcb.w    2,0
  2111. mt_aud2temp:
  2112.     dcb.w    10,0
  2113.     dc.w    2
  2114.     dcb.w    2,0
  2115. mt_aud3temp:
  2116.     dcb.w    10,0
  2117.     dc.w    4
  2118.     dcb.w    2,0
  2119. mt_aud4temp:
  2120.     dcb.w    10,0
  2121.     dc.w    8
  2122.     dcb.w    2,0
  2123.  
  2124. mt_partnote:    dc.l    0
  2125. mt_partnrplay:    dc.l    0
  2126. mt_counter:    dc.w    0
  2127. mt_partpoint:    dc.l    0
  2128. mt_samples:    dc.l    0
  2129. mt_sample1:    dcb.l    31,0
  2130. mt_maxpart:    dc.w    0
  2131. mt_dmacon:    dc.w    0
  2132. mt_status:    dc.w    0
  2133.  
  2134. mt_arpeggio:
  2135.     dc.w $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c
  2136.     dc.w $023a,$021a,$01fc,$01e0,$01c5,$01ac,$0194,$017d
  2137.     dc.w $0168,$0153,$0140,$012e,$011d,$010d,$00fe,$00f0
  2138.     dc.w $00e2,$00d6,$00ca,$00be,$00b4,$00aa,$00a0,$0097
  2139.     dc.w $008f,$0087,$007f,$0078,$0071,$0000,$0000,$0000
  2140. lrgcircle:
  2141.     dc.l    -8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8
  2142.     dc.l    -8,-8,-8,-8,-8,-8,-8,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7
  2143.     dc.l    -6,-6,-6,-6,-6,-6,-6,-6,-6,-6,-5,-5,-5,-5,-5,-5,-5,-5,-5,-4
  2144.     dc.l    -4,-4,-4,-4,-4,-4,-4,-4,-3,-3,-3,-3,-3,-3,-3,-2,-2,-2,-2,-2
  2145.     dc.l    -2,-2,-2,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,1,1,1
  2146.     dc.l    1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3
  2147.     dc.l    3,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5
  2148.     dc.l    6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7
  2149.     dc.l    7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7
  2150.     dc.l    7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7
  2151.     dc.l    7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6
  2152.     dc.l    5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,3
  2153.     dc.l    3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,1,1,1,1,1
  2154.     dc.l    1,1,1,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-2,-2,-2
  2155.     dc.l    -2,-2,-2,-2,-2,-3,-3,-3,-3,-3,-3,-3,-3,-4,-4,-4,-4,-4,-4,-4
  2156.     dc.l    -4,-5,-5,-5,-5,-5,-5,-5,-5,-5,-6,-6,-6,-6,-6,-6,-6,-6,-6,-6
  2157.     dc.l    -7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-8,-8,-8,-8,-8,-8,-8
  2158.     dc.l    -8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8
  2159.  
  2160.     dc.l    -7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7
  2161.     dc.l    -6,-6,-6,-6,-6,-6,-6,-6,-6,-6,-5,-5,-5,-5,-5,-5,-5,-5,-5,-4
  2162.     dc.l    -4,-4,-4,-4,-4,-4,-4,-4,-3,-3,-3,-3,-3,-3,-3,-2,-2,-2,-2,-2
  2163.     dc.l    -2,-2,-2,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0
  2164.  
  2165. medcircle:
  2166.     dc.l    1,1,1,1,1,1,1,1,1,1,1,1,1
  2167.     dc.l    1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
  2168.     dc.l    2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3
  2169.     dc.l    3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
  2170.     dc.l    3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
  2171.     dc.l    3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2
  2172.     dc.l    2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1
  2173.     dc.l    1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0
  2174.     dc.l    0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
  2175.     dc.l    -1,-1,-1,-1,-1,-1,-1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2
  2176.     dc.l    -2,-2,-2,-2,-2,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3
  2177.     dc.l    -3,-3,-3,-3,-3,-3,-3,-3,-3,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4
  2178.     dc.l    -4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4
  2179.     dc.l    -4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4
  2180.     dc.l    -4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-3,-3,-3,-3,-3,-3,-3,-3,-3
  2181.     dc.l    -3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-2,-2,-2,-2,-2
  2182.     dc.l    -2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-1,-1,-1,-1,-1,-1,-1
  2183.     dc.l    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0
  2184.     dc.l    0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1
  2185.     dc.l    1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
  2186.     dc.l    2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3
  2187.     dc.l    3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
  2188.     dc.l    3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
  2189.  
  2190.     dc.l    2,2,2,2,2,2,2,2,2
  2191.     dc.l    2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1
  2192.     dc.l    1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0
  2193.     dc.l    0,0,0,0,0,0,0,0,0,0
  2194.  
  2195.     dc.l    -1,-1,-1,-1,-1,-1,-1,-2,-2,-2
  2196.     dc.l    -2,-2,-2,-2,-2,-3,-3,-3,-3,-3,-3,-3,-3,-4,-4,-4,-4,-4,-4,-4
  2197.     dc.l    -4,-5,-5,-5,-5,-5,-5,-5,-5,-5,-6,-6,-6,-6,-6,-6,-6,-6,-6,-6
  2198.     dc.l    -7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-7,-8,-8,-8,-8,-8,-8,-8
  2199.     dc.l    -8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8
  2200.  
  2201. vec:    dc.l    0
  2202.  
  2203.  
  2204. Killspr:
  2205.     move.l    #deadspr,d0
  2206.     move.w    d0,sp0+6
  2207.     move.w    d0,sp1+6
  2208.     move.w    d0,sp2+6
  2209.     move.w    d0,sp3+6
  2210.     move.w    d0,sp4+6
  2211.     move.w    d0,sp5+6
  2212.     move.w    d0,sp6+6
  2213.     move.w    d0,sp7+6
  2214.     swap    d0
  2215.     move.w    d0,sp0+2
  2216.     move.w    d0,sp1+2
  2217.     move.w    d0,sp2+2
  2218.     move.w    d0,sp3+2
  2219.     move.w    d0,sp4+2
  2220.     move.w    d0,sp5+2
  2221.     move.w    d0,sp6+2
  2222.     move.w    d0,sp7+2
  2223.     rts
  2224.     even
  2225.  
  2226. scrl:    tst.l    pause
  2227.     beq    .lp
  2228.     sub.l    #1,pause
  2229.     rts
  2230. .lp:    jsr    scrl2
  2231. scrl2:    sub.b    #1,scrlcount
  2232.     bne    nextpix
  2233.     moveq.l    #0,d0
  2234.     lea    mess,a0
  2235.     add.l    messcount,a0
  2236.     move.b    (a0),d0
  2237.     bne    notend
  2238.     move.l    #0,messcount
  2239.     bra    nextpix
  2240. notend:    cmp.b    #$ff,d0
  2241.     bne    notpause
  2242.     move.l    #100,pause
  2243.     add.l    #1,messcount
  2244.     rts
  2245. notpause:
  2246.     add.l    #1,messcount
  2247.     sub.b    #32,d0
  2248.     lea    pixwidth,a0
  2249.     move.b    (a0,d0),scrlcount
  2250.     asl.l    #1,d0
  2251.     lea    chars,a1
  2252.     add.l    d0,a1
  2253.     move.l    scrlbase,a0
  2254.     add.l    #42,a0
  2255.  
  2256.     moveq.l    #2,d0
  2257.  
  2258. .lp:    move.w    (a1),(a0)
  2259.     move.w    118(a1),44(a0)
  2260.     move.w    236(a1),88(a0)
  2261.     move.w    354(a1),132(a0)
  2262.     move.w    472(a1),176(a0)
  2263.  
  2264.     move.w    590(a1),220(a0)
  2265.     move.w    708(a1),264(a0)
  2266.     move.w    826(a1),308(a0)
  2267.     move.w    944(a1),352(a0)
  2268.     move.w    1062(a1),396(a0)
  2269.  
  2270.     move.w    1180(a1),440(a0)
  2271.     move.w    1298(a1),484(a0)
  2272.     move.w    1416(a1),528(a0)
  2273.     move.w    1534(a1),572(a0)
  2274.     move.w    1652(a1),616(a0)
  2275.  
  2276.     move.w    1770(a1),660(a0)
  2277.     move.w    1888(a1),704(a0)
  2278.     move.w    2006(a1),748(a0)
  2279.     move.w    2124(a1),792(a0)
  2280.     move.w    2242(a1),836(a0)
  2281.  
  2282.     move.w    2360(a1),880(a0)
  2283.     move.w    2478(a1),924(a0)
  2284.     move.w    2596(a1),968(a0)
  2285.     move.w    2714(a1),1012(a0)
  2286.     move.w    2832(a1),1056(a0)
  2287.  
  2288.     add.l    #$44c,a0
  2289.     add.l    #$b86,a1
  2290.     dbra    d0,.lp
  2291.  
  2292. nextpix:
  2293.     bsr    wb
  2294.     move.l    scrlbase,d0
  2295.     move.l    d0,d1
  2296.     add.l    #2,d0
  2297.     move.l    d0,$dff050    ;a source IM
  2298.     move.l    d1,$dff054    ;d source
  2299.     move.w    #$0000,$dff064    ;a mod
  2300.     move.w    #$0000,$dff066    ;d mod
  2301.     move.w    #$7fff,$dff044    ;fw mask
  2302.     move.w    #$ffff,$dff046    ;lw mask
  2303.     move.w    #%1111100111110000,$dff040    ;con0
  2304.     move.w    #%1111000000000000,$dff042    ;con1
  2305.     move.w    #%0000011001010110,$dff058    ;size        
  2306.     bsr    wb
  2307.     ;move.w    #$0000,$dff180
  2308.  
  2309.  
  2310.     add.l    #$44c,d1
  2311.     add.l    #$44c,d0
  2312.     
  2313.     move.l    d0,$dff050    ;a source IM
  2314.     move.l    d1,$dff054    ;d source
  2315.     move.w    #%0000011001010110,$dff058    ;size        
  2316.     bsr    wb
  2317.  
  2318.     add.l    #$44c,d1
  2319.     add.l    #$44c,d0
  2320.     
  2321.     move.l    d0,$dff050    ;a source IM
  2322.     move.l    d1,$dff054    ;d source
  2323.     move.w    #%0000011001010110,$dff058    ;size        
  2324.     bsr    wb
  2325.  
  2326.     rts
  2327.  
  2328. messcount:
  2329.     dc.l    0
  2330. pause:    dc.l    0
  2331. scrlcount:
  2332.     dc.b    2
  2333.     even
  2334.  
  2335. pixwidth:                 
  2336.     dc.b    10,6,14,16,16,16,16,7,11,11,16,16,7,16,7,16,16,7
  2337.     dc.b    16,16,16,16,16,16,16,16,6,7
  2338.     dc.b    16,16,16,16,16,16,16,16,16,16,16,16,16,6
  2339.     dc.b    16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16
  2340.     dc.b    16,16,16
  2341.  
  2342.  
  2343. mess:    
  2344.     DC.B     "             EXTREME          ",255
  2345.     dc.b    " BRINGS YOU A TEST VERSION OF OUR FUCKING COOL DEMO WHICH WILL BE RELEASED AT THE "
  2346.     DC.B    "PARTY IN NEWCASTLE 1990! THIS IS WIZOID SPEAKING ERE! HEY MYSTIK WHAT DO YA FINK OF THIS THEN!?"
  2347.     DC.B    " QUITE COOL EH???...  HI TO ALL LAMERS IN HULL LIKE:  TOMORROWS WORLD      TONY     THOSE LITTLE TRINITY HOUSE"
  2348.     DC.B    " WANKERS!     MARK.N      PEACOCK!     AND ALL OTHERS.        MEGA COOL GREETS TO:    ANDY.C    ANDY.W    ANDY.N    JAS    AND ALL"
  2349.     DC.B     " OTHERS!!!!                  BYEEEEEEEEEE                      ",0
  2350.         
  2351.     even
  2352.     
  2353. plnaddr:
  2354.     dc.l    bpln1,bpln2,bpln3,bpln4,bpln5,bpln6,bpln7,bpln8
  2355.     dc.l    bpln9,bplna,bplnb,bplnc,bplnd,bplne,bplnf,bpln10
  2356.     dc.l    bpln11,bpln12,bpln13,bpln14,bpln15,bpln16,bpln17,bpln18
  2357.     dc.l    bpln19,bpln1a,bpln1b,bpln1c,bpln1d,bpln1e,bpln1f,bpln20
  2358.     dc.l    bpln21,bpln22,bpln23,bpln24,bpln25,bpln26,bpln27,bpln28
  2359.     dc.l    bpln29,bpln2a,bpln2b,bpln2c,bpln2d,bpln2e,bpln2f,bpln30
  2360.     dc.l    bpln31,bpln32,bpln33,bpln34,bpln35,bpln36,bpln37,bpln38
  2361.     dc.l    bpln39,bpln3a,bpln3b,bpln3c,bpln3d,bpln3e,bpln3f,bpln40
  2362.     dc.l    bpln41,bpln42,bpln43,bpln44,bpln45,bpln46,bpln47,bpln48
  2363.     dc.l    bpln49,bpln4a,bpln4b,bpln4c,bpln4d,bpln4e,bpln4f,bpln50
  2364.     dc.l    bpln51,bpln52,bpln53,bpln54,bpln55,bpln56,bpln57,bpln58
  2365.     dc.l    bpln59,bpln5a,bpln5b,bpln5c,bpln5d,bpln5e,bpln5f,bpln60
  2366.     dc.l    bpln61,bpln62,bpln63,bpln64,bpln65,bpln66,bpln67,bpln68
  2367.     dc.l    bpln69,bpln6a,bpln6b,bpln6c,bpln6d,bpln6e,bpln6f,bpln70
  2368.     dc.l    bpln71,bpln72,bpln73,bpln74,bpln75,bpln76,bpln77,bpln78
  2369.     dc.l    bpln79,bpln7a,bpln7b,bpln7c,bpln7d,bpln7e,bpln7f,bpln80
  2370.  
  2371. squdata:
  2372.     dc.w    0,0,0,0,0,1,1
  2373.     dc.w    1,1,2,2,2,3,3,4,4,5
  2374.     dc.w    5,6,6,7,7,8,9,9,10,11
  2375.     dc.w    12,13,13,14,15,16,17,18,19,20
  2376.     dc.w    21,22,23,24,25,26,28,29,30,31
  2377.     dc.w    33,34,35,37,38,39,41,42,44,45
  2378.     dc.w    47,48,50,52,53,55,57,58,60,62
  2379.     dc.w    64,65,67,69,71,73,75,77,79,81
  2380.     dc.w    83,85,87,89,91,93,96,98,100,102
  2381.     dc.w    105,107,109,112,114,117,119,121,124,127
  2382.  
  2383. squpos:    dc.w    0,20,40,60,80,100,120,140,160,180        ;actual word offsets (+2)'s
  2384. startoff:
  2385.     dc.l    plndat-2
  2386.     dc.l    plndat2-2
  2387.  
  2388. plndat:
  2389.     incbin    bpln1
  2390.     incbin    bpln2
  2391.     incbin    bpln3
  2392.     incbin    bpln4
  2393.     incbin    bpln5
  2394.     incbin    bpln6
  2395.     incbin    bpln7
  2396.     incbin    bpln8
  2397.     incbin    bpln9
  2398.     incbin    bpln10
  2399.     incbin    bpln11
  2400.     incbin    bpln12
  2401.     incbin    bpln13
  2402.     incbin    bpln14
  2403.     incbin    bpln15
  2404.     incbin    bpln16
  2405.  
  2406. plndat2:
  2407.     ds.b    5120*16
  2408. blnk:    ds.b    40
  2409.  
  2410. deadspr:dc.l    0,0,0,0
  2411.  
  2412. mount1:    incbin    'mount1bit'
  2413.     even
  2414. mount2:    incbin    'mount2bit'
  2415.     even
  2416. mask:    incbin    'range2mask'
  2417.     even
  2418. logo:    incbin    'logobit'
  2419.     even
  2420. chars:    incbin    texyraw
  2421.     even
  2422.  
  2423. spcl0:    dc.l    32
  2424. spcl1:    dc.l    32
  2425. spcl2:    dc.l    32
  2426. spcl3:    dc.l    32
  2427. save1:    dc.l    0
  2428. save2:    dc.l    0
  2429. save3:    dc.l    0
  2430. save4:    dc.l    0
  2431. spectab:
  2432.     dc.w    32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17
  2433.     dc.w    16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,1
  2434. spec0:
  2435.     dc.w    $8041,$a000
  2436.     dc.w    $00ff,$0000
  2437.     dc.w    $00ff,$0000
  2438.     dc.w    $00fe,$0001
  2439.     dc.w    $00fc,$003f
  2440.     dc.w    $00fc,$003f
  2441.     dc.w    $00fc,$003f
  2442.     dc.w    $00fc,$003f
  2443.     dc.w    $00fc,$003f
  2444.     dc.w    $00fc,$003f
  2445.     dc.w    $00fc,$003f
  2446.     dc.w    $00fc,$003f
  2447.     dc.w    $00fc,$003f
  2448.     dc.w    $00fc,$003f
  2449.     dc.w    $00fc,$003f
  2450.     dc.w    $00fc,$003f
  2451.     dc.w    $00fc,$003f
  2452.     dc.w    $00fc,$003f
  2453.     dc.w    $00fc,$003f
  2454.     dc.w    $00fc,$003f
  2455.     dc.w    $00fc,$003f
  2456.     dc.w    $00fc,$003f
  2457.     dc.w    $00fc,$003f
  2458.     dc.w    $00fc,$003f
  2459.     dc.w    $00fc,$003f
  2460.     dc.w    $00fc,$003f
  2461.     dc.w    $00fc,$003f
  2462.     dc.w    $00fc,$003f
  2463.     dc.w    $00fc,$003f
  2464.     dc.w    $00fc,$003f
  2465.     dc.w    $00fc,$003f
  2466.     dc.w    $00fc,$003f
  2467.     dc.w    $00fc,$003f
  2468.     dc.w    $0000,$0000
  2469.  
  2470. spec1:
  2471.     dc.w    $8049,$a000
  2472.     dc.w    $00ff,$0000
  2473.     dc.w    $00ff,$0000
  2474.     dc.w    $00fe,$0001
  2475.     dc.w    $00fc,$003f
  2476.     dc.w    $00fc,$003f
  2477.     dc.w    $00fc,$003f
  2478.     dc.w    $00fc,$003f
  2479.     dc.w    $00fc,$003f
  2480.     dc.w    $00fc,$003f
  2481.     dc.w    $00fc,$003f
  2482.     dc.w    $00fc,$003f
  2483.     dc.w    $00fc,$003f
  2484.     dc.w    $00fc,$003f
  2485.     dc.w    $00fc,$003f
  2486.     dc.w    $00fc,$003f
  2487.     dc.w    $00fc,$003f
  2488.     dc.w    $00fc,$003f
  2489.     dc.w    $00fc,$003f
  2490.     dc.w    $00fc,$003f
  2491.     dc.w    $00fc,$003f
  2492.     dc.w    $00fc,$003f
  2493.     dc.w    $00fc,$003f
  2494.     dc.w    $00fc,$003f
  2495.     dc.w    $00fc,$003f
  2496.     dc.w    $00fc,$003f
  2497.     dc.w    $00fc,$003f
  2498.     dc.w    $00fc,$003f
  2499.     dc.w    $00fc,$003f
  2500.     dc.w    $00fc,$003f
  2501.     dc.w    $00fc,$003f
  2502.     dc.w    $00fc,$003f
  2503.     dc.w    $00fc,$003f
  2504.     dc.w    $0000,$0000
  2505.  
  2506. spec2:
  2507.     dc.w    $80cc,$a000
  2508.     dc.w    $00ff,$0000
  2509.     dc.w    $00ff,$0000
  2510.     dc.w    $00fe,$0001
  2511.     dc.w    $00fc,$003f
  2512.     dc.w    $00fc,$003f
  2513.     dc.w    $00fc,$003f
  2514.     dc.w    $00fc,$003f
  2515.     dc.w    $00fc,$003f
  2516.     dc.w    $00fc,$003f
  2517.     dc.w    $00fc,$003f
  2518.     dc.w    $00fc,$003f
  2519.     dc.w    $00fc,$003f
  2520.     dc.w    $00fc,$003f
  2521.     dc.w    $00fc,$003f
  2522.     dc.w    $00fc,$003f
  2523.     dc.w    $00fc,$003f
  2524.     dc.w    $00fc,$003f
  2525.     dc.w    $00fc,$003f
  2526.     dc.w    $00fc,$003f
  2527.     dc.w    $00fc,$003f
  2528.     dc.w    $00fc,$003f
  2529.     dc.w    $00fc,$003f
  2530.     dc.w    $00fc,$003f
  2531.     dc.w    $00fc,$003f
  2532.     dc.w    $00fc,$003f
  2533.     dc.w    $00fc,$003f
  2534.     dc.w    $00fc,$003f
  2535.     dc.w    $00fc,$003f
  2536.     dc.w    $00fc,$003f
  2537.     dc.w    $00fc,$003f
  2538.     dc.w    $00fc,$003f
  2539.     dc.w    $00fc,$003f
  2540.     dc.w    $0000,$0000
  2541.  
  2542. spec3:
  2543.     dc.w    $80d4,$a000
  2544.     dc.w    $00ff,$0000
  2545.     dc.w    $00ff,$0000
  2546.     dc.w    $00fe,$0001
  2547.     dc.w    $00fc,$003f
  2548.     dc.w    $00fc,$003f
  2549.     dc.w    $00fc,$003f
  2550.     dc.w    $00fc,$003f
  2551.     dc.w    $00fc,$003f
  2552.     dc.w    $00fc,$003f
  2553.     dc.w    $00fc,$003f
  2554.     dc.w    $00fc,$003f
  2555.     dc.w    $00fc,$003f
  2556.     dc.w    $00fc,$003f
  2557.     dc.w    $00fc,$003f
  2558.     dc.w    $00fc,$003f
  2559.     dc.w    $00fc,$003f
  2560.     dc.w    $00fc,$003f
  2561.     dc.w    $00fc,$003f
  2562.     dc.w    $00fc,$003f
  2563.     dc.w    $00fc,$003f
  2564.     dc.w    $00fc,$003f
  2565.     dc.w    $00fc,$003f
  2566.     dc.w    $00fc,$003f
  2567.     dc.w    $00fc,$003f
  2568.     dc.w    $00fc,$003f
  2569.     dc.w    $00fc,$003f
  2570.     dc.w    $00fc,$003f
  2571.     dc.w    $00fc,$003f
  2572.     dc.w    $00fc,$003f
  2573.     dc.w    $00fc,$003f
  2574.  
  2575.     dc.w    $00fc,$003f
  2576.     dc.w    $00fc,$003f
  2577.     dc.w    $0000,$0000
  2578.  
  2579.  
  2580. mt_data:    incbin    'work:protracker/modules/mod.zadd_!'
  2581.